除了正则表达式PCRE(Php)中的捕获组之外如何匹配

时间:2017-08-14 12:24:20

标签: php regex pcre regex-lookarounds

我试图匹配模式期待一个群体 我试图匹配的模式是/\|/g,即字符 示例 - Val 1 | Val 2 | Val3 这将返回2场比赛

但我想跳过| char如果在[[]]里面 示例 - ' Val 1 | [[| ]] | Val 3'

这里我不想要| <[]]中的char将被返回。因此,这应该返回2个匹配。

我尝试过负面看,但我的正则表达似乎不起作用。

我抓住[[| ]]使用 - \[\[.*\|.*\]\] [^(\[\[.*\|.*\]\])](?!(\[\[.*\|.*\]\]))似乎没有给我想要的结果。

谢谢!

1 个答案:

答案 0 :(得分:1)

使用SKIP-FAIL technique

\[\[.*?]](*SKIP)(*FAIL)|\|

请参阅regex demo

<强>详情

  • \[\[.*?]](*SKIP)(*FAIL) - 匹配[[,然后匹配任何0 +字符,尽可能少,而不是换行符(添加/s修饰符以匹配不同的行)然后{{1 }},然后]](或(*SKIP)(*FAIL)(*SKIP)(*F))将省略匹配,并使正则表达式引擎继续搜索另一个(*SKIP)(?!)的结尾目前的比赛
  • | - 或
  • | - 文字\|竖线符号