我试图用双管||替换json字符串中的所有\ n。以下是字符串的示例:
{"comment":"test1
test2
test3"}';
这是我所做的正则表达式:
preg_match('/"comment":"(([^\n\t\r"]*)([\n\t\r]*))+"/', $a, $t);
这个preg_match的结果是
Array
(
[0] => "comment":"test1
test2
test3"
[1] =>
[2] =>
[3] =>
)
我找不到我的正则表达式有什么问题。
我是否需要递归模式(?R)?
感谢。
答案 0 :(得分:1)
使用下面的preg_replace函数。我认为你的输入有平衡的paranthesis。
preg_replace('~(?:"comment"[^\n]*|\G)\K\n([^{}\n]*)~', '||\1', $str)
答案 1 :(得分:0)
\n+(?=[^{]*})
您只需使用此{。替换为||
。
$re = "/\\n+(?=[^{]*})/i";
$str = "{\"comment\":\"test1\n test2\n test3\"}'";
$subst = "||";
$result = preg_replace($re, $subst, $str);