【发布时间】:2018-12-30 10:56:27
【问题描述】:
我需要替换大括号内字符串中的所有空格(包括前缀)。 示例:
发件人:x{Test test} test test x{Test test test } test {Test test}
致x{Test_test} test test x{Test_test_test } test {Test test}
(仅适用于x{} - 当花括号包含 x 前缀时)
我可以在lookhead/lookbehind的帮助下做到这一点,但这在PHP/PCRE中不起作用
`(?<=x\{[^\{\}]+)\s+(?=[^\{\}]+\})`
问题是如何做到 PHP/PCRE 兼容 preg_replace 函数?
【问题讨论】:
-
x{Test_test_test }中}之前的空格怎么办? -
跟最后一样:x{ Test test test } => x{ Test_test_test }
-
使用
preg_replace_callback更容易:preg_replace_callback('~\bx{[^{}]+}~', function ($m) { return preg_replace('~(?<!{)\s++(?!})~', '_', $m[0]); }, $str)
标签: php regex preg-replace pcre