我正在尝试以这种格式解析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”。
我该怎么办?
答案 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