Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 替换大括号内字符串中的所有空格_Php_Regex_Preg Replace_Pcre - Fatal编程技术网

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'~?