匹配除双方括号之间的任何地方
Match anywhere except between double square brackets
我正在尝试匹配一个模式,除非匹配出现在双方括号之间。
我要匹配的模式是 \|
,即 |
字符。
示例:
Val 1 | Val 2 | Val3
这将 return 2 场比赛。但是,如果 |
字符在 [[...]]
内,我想跳过它。示例:
Val 1 | [[ | ]] | Val 3
这里我不要| [[ ]] 中的字符为 returned.Therefore 这应该 return 2 个匹配项。
我尝试了否定前瞻,但我的正则表达式似乎不起作用。
我使用 \[\[.*\|.*\]\]
:
捕获了 [[ | ]]
[^(\[\[.*\|.*\]\])]
(?!(\[\[.*\|.*\]\]))
那些似乎没有给我想要的结果。
使用 SKIP-FAIL technique:
\[\[.*?]](*SKIP)(*FAIL)|\|
详情
\[\[.*?]](*SKIP)(*FAIL)
- 匹配 [[
,然后匹配任何 0+ 个字符,尽可能少,除了换行字符(添加 /s
修饰符以跨行匹配)然后 ]]
,然后 (*SKIP)(*FAIL)
(或 (*SKIP)(*F)
或 (*SKIP)(?!)
)将省略匹配项,并使正则表达式引擎继续从末尾搜索另一个 |
当前比赛的
|
- 或
\|
- 文字 |
管道符号
我正在尝试匹配一个模式,除非匹配出现在双方括号之间。
我要匹配的模式是 \|
,即 |
字符。
示例:
Val 1 | Val 2 | Val3
这将 return 2 场比赛。但是,如果 |
字符在 [[...]]
内,我想跳过它。示例:
Val 1 | [[ | ]] | Val 3
这里我不要| [[ ]] 中的字符为 returned.Therefore 这应该 return 2 个匹配项。
我尝试了否定前瞻,但我的正则表达式似乎不起作用。
我使用 \[\[.*\|.*\]\]
:
[[ | ]]
[^(\[\[.*\|.*\]\])]
(?!(\[\[.*\|.*\]\]))
那些似乎没有给我想要的结果。
使用 SKIP-FAIL technique:
\[\[.*?]](*SKIP)(*FAIL)|\|
详情
\[\[.*?]](*SKIP)(*FAIL)
- 匹配[[
,然后匹配任何 0+ 个字符,尽可能少,除了换行字符(添加/s
修饰符以跨行匹配)然后]]
,然后(*SKIP)(*FAIL)
(或(*SKIP)(*F)
或(*SKIP)(?!)
)将省略匹配项,并使正则表达式引擎继续从末尾搜索另一个|
当前比赛的|
- 或\|
- 文字|
管道符号