我有这行文字:
This is {{some. test}} to see if I can remove spaces
我想要使用正则表达式的这一行文字:
This is {{some.test}} to see if I can remove spaces
我已尝试this question进入正确的方向,虽然我可以将所有多个空格与([ \t]+[ ])+
匹配但我不知道如何匹配{{1}之间的匹配}和{{
。
如何修改当前的正则表达式?
答案 0 :(得分:2)
要删除{{...}}
中的所有空格,您可以将{{...}}
子字符串与{{.*?}}
正则表达相匹配,并将这些匹配项中的空格替换为preg_replace_callback
:
$re = '~{{.*?}}~s';
$str = "This is {{some. test}} to see if I can remove spaces";
echo preg_replace_callback($re, function($m) {
return str_replace(" ", "", $m[0]);
}, $str);
请参阅IDEONE demo
s
修饰符也会使.
与换行符匹配。如果您不需要(并且只想匹配一行中的{{...}}
子字符串,请删除s
。
要替换所有类型的空格,请在回调中使用preg_replace
,\s+
模式匹配1个以上空白字符:
preg_replace('~\s+~', '', $m[0])