假设我正在使用vscode的搜索功能查找图片代码:
<img src="images/spacer.gif width=1 height=1>
但只匹配没有 alt=""
标记的那些。我该如何实现呢?
我知道ripgrep不支持负向前瞻/后悔。
^(\s*)<img src="images/spacer.gif"(?!.*alt="".*$).*$
是有效的正则表达式,但由于上述限制,唉不起作用。那么负面前瞻/外观背后的替代方案是什么呢?大量的捕获组?
答案 0 :(得分:1)
对于快速而肮脏的方式,你可以使用一个驯化的贪婪令牌:
<img(?:(?!alt=).)*?>
<小时/>
说明:
<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">
完全有效。在这里,解析器可能有所帮助。