如何匹配除正则表达式中的捕获组PCRE(Php)
问题描述:
我试图匹配一个模式期望一个组 我试图匹配的模式是/\|/g
即|字符 示例 - Val 1 | Val 2 | Val3
这将返回2个匹配项如何匹配除正则表达式中的捕获组PCRE(Php)
但是我想跳过| char如果它在里面[[]] 示例 - 'Val 1 | [[| ]] | Val 3'
这里我不想要| char [[]]中的char将被返回。所以这应该返回2个匹配。
我试过负面看,但我的正则表达式似乎并没有工作。
我抓住[[| ]]使用 - \[\[.*\|.*\]\]
[^(\[\[.*\|.*\]\])]
和(?!(\[\[.*\|.*\]\]))
似乎没有给我想要的结果。
谢谢!
答
\[\[.*?]](*SKIP)(*FAIL)|\|
详细
-
\[\[.*?]](*SKIP)(*FAIL)
- 匹配[[
,那么任何0+字符,尽可能少,比其他行打破字符(添加/s
修改器以跨线匹配),然后]]
,然后(*SKIP)(*FAIL)
(或(*SKIP)(*F)
或(*SKIP)(?!)
)将省略匹配并将使正则表达式引擎继续从当前匹配 -
|
的端搜索另一个|
- 或 -
\|
- 字面|
管符号
不应该是\ [。*?\] \](* SKIP)(* FAIL)| \ | ? \] \]会让它保持一致,我猜。 –
']'不是一个特殊的正则表达式元字符,它不需要转义。最好的做法是只逃避必须逃脱的东西。 –
感谢您的解释! –