我有以下字符串:
$string = '66 hello 2.3 - 44 world 99 -8';
我需要一个正则表达式来删除字符-
之间的空格,如果它用数字包裹着。因此,在上面的示例中,我们最终得到:
$string = '66 hello 2.3-44 world 99-8';
什么是合适的正则表达式方法?
答案 0 :(得分:2)
这是您的方法:
$string = '66 hello 2.3 - 44 world 99 -8';
$string_without_spaces = preg_replace('(\d)\s*(\-)\s*(\d)', '\1\2\3', $string);
答案 1 :(得分:0)
这是我对此的解决方案:
$string = '66 hello 2.3 - 44 world 99 -8';
echo preg_replace('[-\s(?=\d)]', '-', preg_replace('[(?<=\d)\s-]', '-', $string));
仅当在前面或后面找到数字时,才替换连字符。
答案 2 :(得分:-1)
在任何情况下,如果您的横排空格两侧都没有数字?如果没有,只需使用str_replace()
<?php
$string = '66 hello 2.3 - 44 world 99 -8';
$string = str_replace(' - ', '-', $string);
echo $string; //66 hello 2.3-44 world 99 -8
http://php.net/manual/en/function.str-replace.php
如果确实如此,请使用正则表达式。符合条件:
#\d\s-\s\d#
使用此代码:
$regex = '#\d\s-\s\d#';
$string = '66 hello 2.3 - 44 world 99 -8 another dash - but no numbers';
echo preg_replace($regex, '-', $string);
将输出:
66 hello 2.-4 world 99 -8 another dash - but no numbers
您可以在这里看到
如果您想摆弄正则表达式,这里是: