C#Regex - 如何解析瑞典字母åäöÅ?的字符串?

时间:2009-11-23 21:35:38

标签: c# regex html-parsing

我正在尝试以这种格式解析HTML文件:

<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”。

我该怎么办?

3 个答案:

答案 0 :(得分:7)

您可以使用特别包含这些内容的字符类:

[\wåäöÅÄÖ]*

或者您可以将Unicode字符类用于字母:

\p{L}

或专门针对拉丁语:

\p{InBasicLatin}

答案 1 :(得分:4)

您可以使用\p{L}来匹配任何“字母”,这将支持所有语言中的所有字母,如SO question中所述。

或者,您只需将\w*替换为[^<]*,即可匹配所有不属于HTML标记的字符。

但正如其他人所说,使用正则表达式解析HTML是a first step towards insanity ...

答案 2 :(得分:3)

首先:不要将常规表达式用于PARSE HTML。使用HTML PARSER。

其次:如果你真的想这样做(而你没有这样做),那么你可以匹配除了'&lt;'之外的任何角色,而不是\ w:

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