Google搜索位置正则表达式

时间:2011-12-24 06:44:32

标签: c# regex

我正在尝试使用以下正则表达式获取谷歌中关键字的搜索位置:

 string lookup = "(<h3 class=\"r\"><a href=\")(\\w+[a-zA-Z0-9.-?=/]*)";

但这对于有超级( - )的网址不起作用,如:

www.example-xyz.com

任何人都可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

使用反斜杠转义你的连字符并用另一个反斜杠转义逃避反斜杠:

string lookup = "(<h3 class=\"r\"><a href=\")(\\w+[a-zA-Z0-9.\\-?=/]*)";

答案 1 :(得分:1)

由于-表示[]范围内的范围,因此您需要使用反斜杠对其进行转义。

string lookup = "(<h3 class=\"r\"><a href=\")(\\w+[a-zA-Z0-9.\-?=/]*)";

顺便说一下,关于使用正则表达式匹配网址的stackoverflow有很多问题,搜索标记[regex][url]可以查看是否需要更精确的正则表达式。

答案 2 :(得分:1)

阅读一本关于正则表达式的好书,如Jeffrey E.F. Friedl's "Mastering Regular Expressions"

它不仅会向您显示-在字符类中创建一个字符范围 -

[a-z]

所以必须逃脱 -

[a\-z]

或放在开头 -

[-az]

或最后 -

[az-]

当逐字表示时,而且单独使用一个正则表达式解析这种标记(Chomsky术语中的无上下文语言)通常是错误的。

您正在寻找标记解析器(如BeautifulSoup或lxml,但在C#中),而RFC 3986, Appendix B则寻找正确的URI匹配表达式。