2010-08-27 63 views
4

這裏是我的文字:如何使用Notepad ++正則表達式搜索來匹配HTML屬性?

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

,我想用這個來結束:

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

所以我試圖用這個表達式在記事本++用什麼來代替:

​​

但與此匹配:

class="c1">Testing "this string" 

如何在一次「?」後停止匹配?

+0

你在做什麼?在服務器上使用服務器端代碼還是在瀏覽器中? – 2010-08-27 20:42:07

+0

@Scott:OP在問如何用Notepad ++替換它。我已經標記並相應地編輯了標題。 – BoltClock 2010-08-27 20:43:30

+0

這總結了我對HTML和正則表達式的非常好的看法:-) http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – 2010-08-27 20:47:22

回答

14

默認情況下,正則表達式greedy(等.*將匹配儘可能多,因爲它可能會,這在你的情況是c1">Testing "this string)。一般情況下,你必須解決這個越來越兩種方式:

  1. 使用nongreedy(或懶惰)修飾符(.*?),它將匹配儘可能少的(在你的情況,只是c1)。不過,Notepad ++不支持懶惰修飾符。
  2. 指定您想要與class="[^"]*"匹配的內容,它將匹配所有不是報價的內容。一般來說,這也是更優化的解決方案。
+0

+1爲補充字符類。 (一旦我的投票限制重置,我會這樣做) – BoltClock 2010-08-27 20:46:33

+0

記事本++不適用於?,但第二種解決方案是完美的。謝謝!! – Khan 2010-08-27 20:48:09

+0

@Khan:如下所述的BoltClock,Notepad ++不支持ungreedy修飾符。 – 2010-08-27 20:49:14

1
class=".*?" 

將使*lazy