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