否定前瞻匹配 sublime text 3 中的错误表达式
Negative look-ahead matches a wrong expression in sublime text 3
我尝试使用 Sublime Text 3 在 HTML 文件中找到没有 alt
属性的 <img>
标签。
我的表情:(<img)((\s)+(?!alt)[a-z]+=\"[^>]*\")*(\s*)(>)
.
但是 Sublime Text 无论如何都会找到具有 alt
属性的标签。为什么它不能按预期工作?什么是正确的方法?
<img class="d-block retina" src="images/header/mobile/slider-bg-2_1x.jpg" alt="">
- 找到了。
但是我想找到没有alt
的东西。例如:
<img class="d-block retina" src="images/header/mobile/slider-bg-2_1x.jpg">
为了拒绝任何包含 alt
命名键的 <img
标签,您可以将正则表达式简化为这样,
<img\s*(?:(?!\balt=).)*\s*>
解释:
<img
- 匹配 <img
标签的开头
\s*
- 允许可选的 space
(?:(?!\balt=).)*
- 这部分一旦看到像这样的精确文字字符串就拒绝字符串 alt=
但如果它看到 alt
作为更大键名中的子字符串则允许像 aaaalt=
或 altxyz=
或 aaaaltbbb=
并捕获任何其他字符零次或多次
\s*
- 在标签结束前再次允许可选的 space
>
- 匹配标签结尾
让我知道这是否适合你。
我尝试使用 Sublime Text 3 在 HTML 文件中找到没有 alt
属性的 <img>
标签。
我的表情:(<img)((\s)+(?!alt)[a-z]+=\"[^>]*\")*(\s*)(>)
.
但是 Sublime Text 无论如何都会找到具有 alt
属性的标签。为什么它不能按预期工作?什么是正确的方法?
<img class="d-block retina" src="images/header/mobile/slider-bg-2_1x.jpg" alt="">
- 找到了。
但是我想找到没有alt
的东西。例如:
<img class="d-block retina" src="images/header/mobile/slider-bg-2_1x.jpg">
为了拒绝任何包含 alt
命名键的 <img
标签,您可以将正则表达式简化为这样,
<img\s*(?:(?!\balt=).)*\s*>
解释:
<img
- 匹配<img
标签的开头\s*
- 允许可选的 space(?:(?!\balt=).)*
- 这部分一旦看到像这样的精确文字字符串就拒绝字符串alt=
但如果它看到alt
作为更大键名中的子字符串则允许像aaaalt=
或altxyz=
或aaaaltbbb=
并捕获任何其他字符零次或多次\s*
- 在标签结束前再次允许可选的 space>
- 匹配标签结尾
让我知道这是否适合你。