我有一些正则表达式可以在 xml 中找到一段代码。但是,我希望它使用 notepad++ 忽略在 middle.im 中设置了特定标记的一段代码。 下面是我的代码的简化版本。
</Question>
ABC
123
<answer>
</Question>
ABC
<Question>
123
<answer>
我的正则表达式选择了两个组,但我希望它因为标签而忽略第二个组
这是我试过的正则表达式。
(?s-i)<\/Question>(?:(?!\<Question>)).*(<answer>)
感谢您的帮助!
答案 0 :(得分:1)
如果您想忽略第二组,则不应交叉匹配 <Question>
或 </Question>
。
由于 (?s)
,点匹配每个字符,包括换行符,.*
将匹配到行尾,然后回溯以匹配 <answer>
匹配所有行。< /p>
您可以匹配单个字符,然后检查右边的内容不是 <Question>
或 </Question>
,并将 /
设为可选。
你可能会使用
(?s-i)</Question>(?:(?!</?Question>).)*<answer>
模式匹配:
(?s-i)
内联修饰符,点匹配换行符并关闭不区分大小写的匹配</Question>
逐字匹配(?:
非捕获组
(?!
否定前瞻,断言直接在右边的不是
</?Question>
匹配 </Question>
或 ?
匹配 0 次或 1 次).
如果断言为真,则匹配单个任意字符)*
关闭群组并可选择重复<answer>