将正则表达式转换为更具体

时间:2014-01-07 11:29:06

标签: .net regex

我有这个正则表达式

<a(.*?)person\=([0-9]*)(.*?)>(.*?)<\/a>

将任何锚点与具有数值

的人物查询字符串匹配

我需要对其进行优化,以便将锚点与一个名为entry.aspx的页面匹配,并使用查询字符串值

IE

<a href="entry.aspx?val1=1&person=12" target="_blank">test</a>
<a href="entry.aspx?person=1&val2=hello">more testing</a>

是匹配

<a href="entry.aspx?val1=1&val2=12" target="_blank">test</a>
<a href="noentry.aspx?person=1&val2=hello">more testing</a>

不是

非常感谢任何帮助

2 个答案:

答案 0 :(得分:3)

快速拍摄:

<a href=\"entry.aspx\?.*(?=person).*>.*<\/a>

请参阅example@regex101 说明:使用positive lookahead此表达式仅在person之后entry.aspx之后和>之前匹配。

答案 1 :(得分:0)

更具体地说,你可以给:

<a href=["]entry[.]aspx[?]([a-zA-Z0-9]+[=][a-zA-Z0-9]+[&]?)*person[=]([0-9]+)([&]?[a-zA-Z0-9]+[=][a-zA-Z0-9]+)*["]([ ]?[a-zA-Z0-9]+[=][_"a-zA-Z0-9]+)*>[a-zA-Z0-9 ]*<\/a>