我是这个正则表达式:
(\[\[.*?\]\])(?<!".*?)
和这个测试数据:
[[Hello]]
<tag Text="my [[Test]] is [[Test2]] for [[Test3]][[Test4]]">
如何让这种后视忽略"
前面的那些?
它应与[[Hello]]
匹配,但不与剩余部分匹配。但是,它当然与它们相匹配。
答案 0 :(得分:4)
你的正则表达式实际上是为你的具体输入做的,我会写..(Working Demo)
\[\[[^]]*\]\](?<!"[^"]*)
您也可以考虑在上下文中使用alternation operator,在左侧放置要排除的内容,(说扔掉它,它是垃圾)并放置您想要匹配的内容右侧的捕获组。
然后你可以参考捕获组来获得你的匹配结果。 (Working Demo)
"[^"]*"|(\[\[[^]]*\]\])
答案 1 :(得分:1)
您可以使用正则表达式技术来丢弃您不想要的内容。它包含一个图案线:
discard1|other discard|more crap|(the content I want)
请注意,您想要的内容是最右侧和捕获组内的内容:
说,你可以使用这个正则表达式:
.*".*".*|.*?(\[\[.*?\]\]).*?
<强> Working demo 强>
MATCH 1
1. [0-9] `[[Hello]]`
另一方面,如果你想使用正则表达式的外观(lookbehind和lookahead)你可以使用这个正则表达式:
(?<!").*?(\[\[.*?\]\])(?!.*")
<强> Working demo 强>
但我喜欢丢弃技术,它非常清晰,可以省去很多麻烦。如果您查找zx81
,anubhava
帖子,他们会在正则表达式上发挥作用,您可以了解很多相关内容。