如何使用 Notepad++ 正则表达式搜索匹配 HTML 属性?

Posted

技术标签:

【中文标题】如何使用 Notepad++ 正则表达式搜索匹配 HTML 属性?【英文标题】:How I match an HTML attribute using Notepad++ regular expression search? 【发布时间】:2011-04-05 00:23:03 【问题描述】:

这是我的文字:

<span class="c1">Testing "this string"</span>

我想以这个结束:

<span>Testing "this string"</span>

所以我尝试在 Notepad++ 中使用这个正则表达式来替换:

 class=".*"

但这符合这个:

 class="c1">Testing "this string"

如何在一个“实例”之后停止匹配?

【问题讨论】:

你在哪里做这个?在服务器上使用服务器端代码还是在浏览器中? @Scott:OP 正在询问如何使用 Notepad++ 替换它。我已经相应地标记并编辑了标题。 这很好地总结了我对 html 和正则表达式的感受 :-) - ***.com/questions/1732348/… @Franci 这通常也是我解决这类问题的首选链接,但在这种情况下,OP 希望在他们的 IDE 中进行查找和替换,所以这是一个合法的例外;) @BoltClock 土豆,土豆(我猜这在文本中并不适用)。 :) 【参考方案1】:

默认情况下,正则表达式为greedy(因此.* 将尽可能匹配尽可能多的,在您的情况下为c1"&gt;Testing "this string)。一般来说,你有两种方法可以解决这个问题:

    使用nongreedy(或惰性)修饰符(.*?),它将尽可能少地匹配(在您的情况下,只需c1)。 Notepad++ 不支持惰性修饰符。 准确指定您想与class="[^"]*" 匹配的内容,它将匹配所有非引号的内容。一般来说,这也是更优化的解决方案。

【讨论】:

+1 表示互补字符类。 (不过,一旦我的投票限制重置,我就会这样做。) Notepad++ 不适用于 ?,但第二个解决方案是完美的。谢谢!! @Khan:正如下面提到的 BoltClock,Notepad++ 不支持不贪婪的修饰符。【参考方案2】:
class=".*?"

将使*lazy。

【讨论】:

以上是关于如何使用 Notepad++ 正则表达式搜索匹配 HTML 属性?的主要内容,如果未能解决你的问题,请参考以下文章

notepad++匹配汉字的正则表达式与Java中的为啥不同?

notepad++正则表达式

notepad正则表达式

Notepad++ 正则表达式匹配两个以上的"."字符

php正则表达式

Notepad ++替换相同文本的正则表达式匹配加上附加字符