2009-11-23 46 views
1

我試圖解析HTML文件,對該格式的字符串:C#正則表達式 - 如何解析字符串的瑞典字母åäöÅÄÖ?

<a href="/userinfo/userinfo.aspx?ID=305157" target="main">MyUsername</a> O22</td> 

我想要檢索的信息,其中「305157」,「MyUserName輸入」和「O22」的第一個字母(可無論是T,K還是O)。

我使用這個正則表達式; <a href="/userinfo/userinfo\.aspx\?ID=\d*" target="helgonmain">\w*</a> \w\d\d並且它工作正常,只要沒有任何「\ w」的åäöÅÄÖ's。

我該怎麼辦?

+3

我真的很抱歉,但我真的需要在這裏發佈此鏈接:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except- xhtml-self-contained-tags/1732454#1732454 – 2009-11-23 21:40:00

+0

我想發佈它,但想到我會盡力幫助他,而不是向他展示它是多麼徒勞的嘗試;)... – Wookai 2009-11-23 21:42:51

+0

是的,發佈一個實際有用的答案會一直好。雖然沒有做過多的HTML解析代碼(但也許會建議尋找Html Agility Pack,它似乎不時彈出一個很好的HTML解析庫:http://www.codeplex.com/htmlagilitypack) – 2009-11-23 23:35:39

回答

3

首先:不要使用正則表達式來解析HTML。使用HTML PARSER。

其次:如果你真的想這樣做(和你不這樣做),那麼代替\ W,你可以離開「<」匹配任何字符:

<a href="/userinfo/userinfo\.aspx\?ID=\d*" target="helgonmain">[^<]*</a> \w\d\d 
4

您可以使用\p{L}來匹配任何'字母',它將支持所有語言的所有字母,如SO question中所建議的。

或者,您可以簡單地將\w*替換爲[^<]*,以匹配所有不是HTML標籤打開的字符。

但作爲被他人使用正則表達式解析HTML說是a first step towards insanity ...

7

您可以使用一個字符類具體包括那些事:

[\wåäöÅÄÖ]* 

或者您可以使用字母的Unicode字符類:

\p{L} 

或專門爲拉丁文:

\p{InBasicLatin} 
相關問題