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