此问题与RegEx: Grabbing values between quotation marks
有关最佳答案的RegEx
(["'])(?:(?=(\\?))\2.)*?\1
用
测试还匹配以转义双引号开头的字符串。我试图将定义扩展到一个负面的看法。
(["'](?<!\\))(?:(?=(\\?))\2.)*?\1
但这不会改变匹配模式中的任何内容。 关于如何排除转义单/双引号作为起始模式的任何建议?
我想在nedit中使用它作为突出显示模式,它支持正则表达式 - 后看。
所需匹配的示例:
<p>
<span style="color: #ff0000">"str1"</span> notstr
<span style="color: #ff0000">"str2"</span>
\"notstr <span style="color: #ff0000">"str4"</span>
</p>
答案 0 :(得分:1)
使用否定lookbehind作为反斜杠,前面没有另一个反斜杠,即
(?<!(?<!\\)\\)["']
解决了这个问题:
((?<!(?<!\\)\\)["'])(?:(?=(\\?))\2.)*?(?<!(?<!\\)\\)\1
您应该非常小心这种方法,因为通常正则表达式不是解析标记语法中输入的好工具。最好使用全尺寸解析器,然后可选地将正则表达式应用于从中获取的部分。