如何使用 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">Testing "this string
)。一般来说,你有两种方法可以解决这个问题:
-
使用nongreedy(或惰性)修饰符(
.*?
),它将尽可能少地匹配(在您的情况下,只需c1
)。 Notepad++ 不支持惰性修饰符。
准确指定您想与class="[^"]*"
匹配的内容,它将匹配所有非引号的内容。一般来说,这也是更优化的解决方案。
【讨论】:
+1 表示互补字符类。 (不过,一旦我的投票限制重置,我就会这样做。) Notepad++ 不适用于 ?,但第二个解决方案是完美的。谢谢!! @Khan:正如下面提到的 BoltClock,Notepad++ 不支持不贪婪的修饰符。【参考方案2】:class=".*?"
将使*
lazy。
【讨论】:
以上是关于如何使用 Notepad++ 正则表达式搜索匹配 HTML 属性?的主要内容,如果未能解决你的问题,请参考以下文章