1

我正在尝试为这种格式的字符串解析 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”所在的位置没有任何åäöÅÄÖ,它就可以正常工作。

我该怎么办?

4

3 回答 3

7

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

[\wåäöÅÄÖ]*

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

\p{L}

或专门针对拉丁语:

\p{InBasicLatin}
于 2009-11-23T21:42:31.690 回答
4

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

或者,您可以简单地替换\w*[^<]*, 以匹配所有不是 HTML 标记开头的字符。

但正如其他人所说,使用正则表达式解析 HTML 是迈向疯狂的第一步......

于 2009-11-23T21:41:40.707 回答
3

首先:不要使用正则表达式来解析 HTML。使用 HTML 解析器。

其次:如果您真的想这样做(而您不想这样做),那么您可以匹配除“<”之外的任何字符,而不是 \w:

<a href="/userinfo/userinfo\.aspx\?ID=\d*" target="helgonmain">[^<]*</a> \w\d\d
于 2009-11-23T21:42:28.943 回答