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

4

这是我的文本:

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

而我希望最终得到这个结果:
<span>Testing "this string"</span>

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

 class=".*"

但是这与以下内容匹配:
 class="c1">Testing "this string"

如何在“?”的一次匹配后停止匹配?

你是在哪里进行这个操作?是在服务器上使用服务器端代码还是在浏览器中? - Scott Evernden
这篇文章非常好地总结了我对HTML和正则表达式的感受 :-) - https://dev59.com/X3I-5IYBdhLWcg3wq6do#1732454 - Franci Penov
1
@Franci,这通常也是我寻找此类问题的首选链接,但在这种情况下,OP想要在他们的IDE中进行查找和替换,因此这是一个合理的例外情况 ;) - Daniel Vandersluis
@Daniel:Notepad++虽然不是一个IDE,但是在一般的代码编辑方面它确实比很多IDE更胜一筹 <3 - BoltClock
1
@BoltClock 土豆,土豆(我猜在文字中这并不起作用)。 :) - Daniel Vandersluis
显示剩余5条评论
2个回答

15

默认情况下,正则表达式是贪婪的(因此.*将匹配尽可能多的内容,在您的例子中是c1">Testing "this string)。一般来说,有两种方法可以解决这个问题:

  1. 使用非贪婪(或懒惰)修饰符(.*?),它将尽可能少地匹配内容(在您的例子中仅为c1)。不过,Notepad++不支持懒惰修饰符。
  2. 通过指定class="[^"]*"来精确匹配您想要的内容,它将匹配不是引号的所有内容。一般来说,这是更优化的解决方案。

+1 用于补充字符类。 (不过我的投票限制还没重置。) - BoltClock
Notepad++不能处理这个字符,但第二个解决方案非常完美。谢谢! - Khan
@Khan:正如BoltClock在下面提到的,Notepad++不支持非贪婪模式修饰符。 - Daniel Vandersluis

1
class=".*?"

将使 * 懒惰


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接