Cor*_*art 5 php regex preg-replace
我正在使用php的preg_split来分割基于分号的字符串,但是我需要它才能在非转义的分号上拆分.
<?
$str = "abc;def\\;abc;def";
$arr = preg_split("/;/", $str);
print_r($arr);
?>
Run Code Online (Sandbox Code Playgroud)
生产:
Array
(
[0] => abc
[1] => def\
[2] => abc
[3] => def
)
Run Code Online (Sandbox Code Playgroud)
当我想要它产生:
Array
(
[0] => abc
[1] => def\;abc
[2] => def
)
Run Code Online (Sandbox Code Playgroud)
我试过了"/(^\\)?;/","/[^\\]?;/"但他们都产生了错误.有任何想法吗?
这有效.
<?
$str = "abc;def\;abc;def";
$arr = preg_split('/(?<!\\\);/', $str);
print_r($arr);
?>
Run Code Online (Sandbox Code Playgroud)
它输出:
Array
(
[0] => abc
[1] => def\;abc
[2] => def
)
Run Code Online (Sandbox Code Playgroud)
你需要使用负面的lookbehind(阅读有关lookarounds).想想"匹配所有";' 除非前面有'\'".