PHP Regex:没有包装的物品

uzu*_*axy 1 php regex

我如何通过PHP正则表达式找到并替换字符串中的所有非包装项?

例如,我有源字符串"2a {2} b2ac1 {1} a {2} aab12 {1} b2a {1} 2"并尝试查找符号"2",这些符号未被"{"和"}"覆盖,在此之后用"{3}"替换它:

$input_lines = "2a{2}b2ac1{1}a{2}aab12{1}b2a{1}2";
$regex = "/[^\{](2)[^\}]/";
$input_lines = preg_replace("/[^\{](2)[^\}]/", "{3}", $input_lines);
echo $input_lines;
// 2a{2}{3}c1{1}a{2}aab{3}1}{3}{1{3}
Run Code Online (Sandbox Code Playgroud)

你怎么看,它现在工作:(

Goo*_*man 5

你可以试试这个:

$input_lines = preg_replace('/(?<!{)2(?!})/', '{3}', $input_lines);
Run Code Online (Sandbox Code Playgroud)