我希望获得一个以管道分隔的字符串的单个字符串,并使用"管道转义"支持,例如:
fielda|field b |field\|with\|pipe\|inside
会得到我:
array("fielda", "field b ", "field|with|pipe|inside")
我如何用正则表达式达到目标?
答案 0 :(得分:4)
答案 1 :(得分:1)
答案 2 :(得分:0)
另一种使用php的方法,使用strtr
将\|
替换为占位符:
$str = 'field a|field b|field\|with\|pipe\|inside';
$str = strtr($str, array('\|' => '#'));
$result = array_map(function ($i) {
return strtr($i, '#', '|');
}, explode('|', $str));
答案 3 :(得分:0)
您可以匹配这些项目
(?:[^\\|]|\\[\s\S])+
请参见regex demo。
注意:如果您需要除|
以外的其他字符,只需将其替换为第一个negated character class,{{1} }。只需注意,您将必须转义[^\\|]
(除非它放在]
之后)和[^
(如果不在课程开始/结束时)。
在许多引擎中,-
可以用[\s\S]
代替,并传递适当的选项to make it match across line endings。
请参见regex graph:
JS演示:
.