不要在正则表达式输出中显示空格

时间:2014-04-18 22:22:26

标签: php regex

我需要匹配所有内容而不是白色空间

例如,在此字符串中:16790 - 140416 / 3300

我希望regex(和PHP)在没有空格的情况下得到以下结果:140416/3300

我用过:\s+\d+\s+-\s+(\d+\s+\/\s+\d+)当然它给了我带空格的结果:

140416 / 3300

如果没有空格,我怎么能得到匹配1的结果?

谢谢

2 个答案:

答案 0 :(得分:1)

$subject = "16790 - 140416 / 3300";
$result = preg_replace('%.*?(\d+)\s+/\s+(\d+)%', '$1/$2', $subject);
echo $result;
// 140416/3300

http://regex101.com/r/oV4hN0

答案 1 :(得分:1)

如果您只是从字符串中删除未知数量的空格和制表符,则可以使用

$result = preg_replace('~\s*~', '', $subject);

如果你匹配你给出的整个模式(不仅仅是除法),你可以使用它:

$result = preg_replace('~(\d+)\s*-\s*(\d+)\s*/\s*(\d+)~', '\1-\2/\3', $subject);

最后,这可能是最好的,如果您想删除运算符周围的空格,例如=,*, - ,/当它们被数字包围时,您可以使用它:

$result = preg_replace('~(\d)\s*([+*/-])\s*(\d)~', '\1\2\3', $subject);