【问题标题】:Regex for multiline search in VSCode正则表达式用于 VSCode 中的多行搜索
【发布时间】:2019-01-09 21:07:13
【问题描述】:

我在 VScode 中有一个正则表达式,用于查找没有 alt="" 和 title="" 标记的 img 行以用于 SEO 目的,但我无法找到格式错误的多行的解决方案。

例如我的正则表达式:

<img((?!alt\=\".*\").)*((?!title\=\".*\").)*>

适用于:

但不适用于:

.

我尝试过类似的东西:

<img\n*\t*\s*\r*((?!alt\=\".*\").)*((?!title\=\".*\").)*\n*\t*\s*\r*>

但它也不起作用。

我正在为此寻找解决方案,因为我有 15k 行具有第二种格式的 html 代码(可能是从 wordpress 帖子复制粘贴)。

如果您想复制它,这是我的示例行:

<img class="img-responsive vertical-center" src="someImage.png" style="height: 65%; width: auto;" alt="" >

【问题讨论】:

  • 应该类似于&lt;img\b(?![^&gt;]*\balt=")(?![^&gt;]*\btitle=")[^&gt;]*&gt; (demo)

标签: regex visual-studio-code


【解决方案1】:

你所要求的真的很棘手,我最接近的是 swap 。对于 [^>] ,除非您在正则表达式参数中指定。将不匹配换行符。

<img((?!alt\=\".*\")[^>])*((?!title\=\".*\")[^>])*>

但是真的不推荐用正则表达式解析html,你可以通过this demo看到。即使测试用例数量有限,也很难捕获所有内容。参数可以是任意顺序,它们可以包含转义字符,并且标签可以相互对接。

我想你知道你的 HTML 有多干净、有多有效以及属性中的值是什么。也许我强调的大多数测试用例都不适用于您?但你的问题没有具体说明这一点。如果我所做的假设不正确,请修改您的问题。

【讨论】:

    猜你喜欢
    • 2019-11-03
    • 1970-01-01
    • 2023-03-02
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多