我想,也许有些表达类似于
(\h{2,}"[^"\r\n]+")$
可能在某种程度上起作用:
测试
$re = '/(\h{2,}"[^"\r\n]+")$/m';
$str = '$array1 = array(
"item1\' => "value1",
"item2\' => "value2",
"item3\' => "value3",
"item4\' => "value4",
);
$array2 = array(
"item1"
"item2"
"item3"
"item4"
);
$array3 = array(
"item1\' => "value1",
"item2\' => "value2",
"item3\' => "value3",
"item4\' => "value4",
);';
$subst = '$1,';
$result = preg_replace($re, $subst, $str);
echo $result;
输出
$array1 = array(
"item1' => "value1",
"item2' => "value2",
"item3' => "value3",
"item4' => "value4",
);
$array2 = array(
"item1",
"item2",
"item3",
"item4",
);
$array3 = array(
"item1' => "value1",
"item2' => "value2",
"item3' => "value3",
"item4' => "value4",
);
如果您希望简化/更新/探索表达式,将在
regex101.com
. 您可以查看匹配的步骤或在中修改它们
this debugger link
,如果你感兴趣的话。调试器演示了
a RegEx engine
可能会逐步使用一些示例输入字符串并执行匹配过程。
方法2
我想,一个类似于,
(?s)(?<=\$array2 = array\()[^)]*
也许可以调查一下。
$re = '/(?s)(?<=\$array2 = array\()[^)]*/';
$str = '$array1 = array(
"item1" => "value1",
"item2" => "value2",
"item3" => "value3",
"item4" => "value4",
);
$array2 = array(
"item1",
"item2",
"item3",
"item4",
);
$array3 = array(
"item1" => "value1",
"item2" => "value2",
"item3" => "value3",
"item4" => "value4",
);';
$subst = '\\n\\t"itemA",\\n\\t"itemB",\\n\\t"itemC",\\n\\t"itemD"\\n';
$result = preg_replace($re, $subst, $str);
echo $result;
产出2
$array1 = array(
"item1" => "value1",
"item2" => "value2",
"item3" => "value3",
"item4" => "value4",
);
$array2 = array(\n\t"itemA",\n\t"itemB",\n\t"itemC",\n\t"itemD"\n);
$array3 = array(
"item1" => "value1",
"item2" => "value2",
"item3" => "value3",
"item4" => "value4",
);