我正在尝试匹配模式,除非匹配出现在双方括号之间。
我要匹配的模式是\|
,即|
字符。
示例:
Val 1 | Val 2 | Val3
这将返回2个匹配项。但是,如果|
字符位于[[...]]
内部,我想跳过它。示例:
Val 1 | [[ | ]] | Val 3
这里我不想要|要返回的[[]]内部的char。因此应返回2个匹配项。
我尝试使用负面的标头,但我的正则表达式似乎无效。
我使用[[ | ]]
捕获了\[\[.*\|.*\]\]
:
[^(\[\[.*\|.*\]\])]
(?!(\[\[.*\|.*\]\]))
这些似乎没有给我想要的结果。
\[\[.*?]](*SKIP)(*FAIL)|\|
请参见regex demo
详细信息
\[\[.*?]](*SKIP)(*FAIL)
-匹配[[
,然后匹配任何0+个字符,尽可能少,除了换行符(添加/s
修饰符以跨行匹配),然后匹配]]
,然后匹配(*SKIP)(*FAIL)
(或(*SKIP)(*F)
或(*SKIP)(?!)
)将忽略匹配项,并使正则表达式引擎从当前匹配项的末尾继续搜索另一个|
|
-或\|
-文字|
管道符号