正则表达式匹配|但不是||

时间:2014-12-26 13:51:24

标签: php regex

我的目标是在a|b||c|dab||c中拆分d字符串。

我尝试了几种方法,但最后以任何方式分割我的字符串:

回顾后:

var_dump(preg_split("/\\|(?<!\\|\\|)/", 'a|b||c|d'));

array (size=4)
  0 => string 'a' (length=1)
  1 => string 'b' (length=1)
  2 => string '|c' (length=2)
  3 => string 'd' (length=1)

先行:

var_dump(preg_split("/(?!\\|\\|)\\|/", 'a|b||c|d'));

array (size=4)
  0 => string 'a' (length=1)
  1 => string 'b|' (length=2)
  2 => string 'c' (length=1)
  3 => string 'd' (length=1)

如何忽略双管?

2 个答案:

答案 0 :(得分:4)

根据以下使用负面外观的正则表达式来分割您的输入。

(?<!\|)\|(?!\|)

DEMO

|是正则表达式中的一个特殊元字符,其作用类似于逻辑OR或交替运算符。要匹配文字|符号,您需要转义正则表达式中的|,例如\|

答案 1 :(得分:1)

您可以使用此正则表达式进行拆分:

(?<!\|)\|(?!\|)