2011-09-15 21 views
3

我一直在做很多關於.NET正則表達式的閱讀,並且我開發了一個正則表達式,這是我無法理解的。試圖瞭解.NET的正則表達式

(src|href)="\w+|(\w+/)+ 

我閱讀此正則表達式的方式:

  1. 嚴絲合縫 「SRC」 或 「HREF」
  2. 其次=」
  3. 其次匹配1個或多個字字符([ (或一個或多個字符後跟一個或多個)

這是爲了匹配'src =「文件夾」, 'SRC = 「文件夾/', 'HREF =」 文件夾/子文件夾/' 等

輸入:

< DOCTYPE HTML >
< HTML的xmlns = "的http:// www.w3.org/1999/xhtml " >
< 頭>

使用該正則表達式,與該輸入,有一個匹配。

組織/ 1999/

任何人都可以解釋這一點?在整個字符串中沒有引用Src或href,怎麼會有任何匹配?例如,

+8

順便說一句,我絕對喜歡這句話「我開發了一個我無法理解的正則表達式」。經典! –

回答

6

這裏發生了什麼是|將正則表達式分成兩個完全獨立的條件。也就是說選擇:(src|href)="\w+(\w+/)+其中第二位被匹配:

org/1999/

在你的情況,你很可能需要把最後一部分括號要清楚究竟交替|指到:

(src|href)="(\w+|(\w+/)+) 

btw我用Expresso來幫助解決這個問題。

+0

@Joey - 謝謝你,我真的只是在那裏打字:-) –

+0

啊,不完全確定,所以我只是繼續前進:P和你是唯一一個解釋實際原因而不是隻給一個指針到一個工具。 – Joey

+0

@Joey - 謝謝 - 我相信你會發現附加的括號 –

3

嘗試Expresso。它有一個很好的「解釋」功能。

2

試試這個程序http://www.regexbuddy.com/。您可以將RegEx風格設置爲.NET,並且它有一個很好的選項卡,可以細分RegEx的每個元素。