否定的外观替代vscode / ripgrep

时间:2018-03-07 07:45:28

标签: regex visual-studio-code regex-negation regex-lookarounds ripgrep

假设我正在使用vscode的搜索功能查找图片代码: <img src="images/spacer.gif width=1 height=1>但只匹配没有 alt=""标记的那些。我该如何实现呢?

我知道ripgrep不支持负向前瞻/后悔。

^(\s*)<img src="images/spacer.gif"(?!.*alt="".*$).*$是有效的正则表达式,但由于上述限制,唉不起作用。那么负面前瞻/外观背后的替代方案是什么呢?大量的捕获组?

1 个答案:

答案 0 :(得分:1)

对于快速而肮脏的方式,你可以使用一个驯化的贪婪令牌:

<img(?:(?!alt=).)*?>

a demo on regex101.com

<小时/> 说明:

<img             # match <img
(?:(?!alt=).)*?  # match anything lazily, making sure there's no
                 # alt ahead
 >               # match >

<小时/> 如果您可以期待像

这样的东西,这被认为是一种糟糕的方法
<img src="/some/source.png" 
     data="Here can be some other <strong>bolded</strong> text">

完全有效。在这里,解析器可能有所帮助。