how to define regex (preg_replace) to removes space between number character
我有这样的字符串:
1 | $str ="old iccid : 809831 3245 345 new iccid : 999000 112221" |
如何定义正则表达式以删除PHP中数字字符之间的空格字符,成为此输出?
1 | $output ="old iccid : 8098313245345 new iccid : 999000112221"; |
我试图使用这种语法:
1 |
但效果不佳。
尝试:
1 |
尝试这个 :
1 2 3 4 | $input ="old iccid : 809831 3245 345 new iccid : 999000 112221" $output = preg_replace("/(\\d)\\s+(\\d)/","$1$2", $input); echo $input ."\ " . $output; //old iccid : 8098313245345 new iccid : 999000112221 |
regex引擎可以更快地遍历字符串/以更少的步骤遍历字符串,而不会产生后顾之忧。
171个步骤:(演示)
1 | /(?<=\\d)\\s+(?=\\d)/ |
115个步骤(演示)
1 | /\\d\\K\\s+(?=\\d)/ |
您会看到,使用环视时,正则表达式引擎必须在每次出现空间时以1或2种方式进行查找。
通过检查数字后跟空格,正则表达式引擎仅在找到合格的两个字符序列后才需要向前看。
在许多情况下,环顾四周和捕获组最终要花费额外的"步骤",因此我更愿意寻找更有效的替代模式。
仅供参考,
ps。您还可以使用