Php 替换大括号内字符串中的所有空格
我需要替换大括号内字符串中的所有空格(包括前缀)。 例如: 发件人:Php 替换大括号内字符串中的所有空格,php,regex,preg-replace,pcre,Php,Regex,Preg Replace,Pcre,我需要替换大括号内字符串中的所有空格(包括前缀)。 例如: 发件人:x{Test}Test Test x{Test}Test{Test} 到x{Test\u Test}Test Test x{Test\u Test}Test{Test Test} (仅适用于x{}-当大括号包含x前缀时) 我可以在lookhead/lookback的帮助下完成,但这在PHP/PCRE中不起作用 `(?<=x\{[^\{\}]+)\s+(?=[^\{\}]+\})` `(?您可以为此使用\Gbases re
x{Test}Test Test x{Test}Test{Test}
到x{Test\u Test}Test Test x{Test\u Test}Test{Test Test}
(仅适用于x{}
-当大括号包含x前缀时)
我可以在lookhead/lookback的帮助下完成,但这在PHP/PCRE中不起作用
`(?<=x\{[^\{\}]+)\s+(?=[^\{\}]+\})`
`(?您可以为此使用\G
bases regex:
$str = 'x{Test test} test test x{Test test test } test {Test test}';
$repl = preg_replace('/(?:x{|(?<!^)\G)[^\s}]*\K\s+(?!})/', '_', $str);
//=> x{Test_test} test test x{Test_test_test } test {Test test}
$str='x{Test}Test x{Test}Test{Test}';
$repl=preg_replace('/(?:x{{{|(?}
紧跟在前面
在x{Test\u Test\u Test}
中的之前的空格是什么呢?最后也是一样的:x{Test}=>x{Test\u Test\u Test}更容易使用preg\u replace\u回调:preg\u replace\u回调('~\bx{[^}+}',函数($m){return preg\u replace'~?