2014-01-07 41 views
-1

我有这样的正则表达式转换正则表达式更具体

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

任何帮助,将不胜感激

+0

强制性评论:你不想用正则表达式解析HMTL。使用[适当的解析器](http://htmlagilitypack.codeplex.com/)。 – Tomalak

+1

除@Tomalaks评论:当提出这样的问题时,最好提供样本输入和期望的输出,因为很难猜测你想实现什么。 –

+0

@Basti - 我不需要输出,但我已经包含了一些预期输入的例子。 – DavidB

回答

3

只是一个快速的镜头:

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

[email protected]
说明:使用positive lookahead此表达式仅当personentry.aspx之后和>之前匹配。

+0

非常感谢,通过第一轮测试http://gskinner.com/RegExr/ – DavidB

+0

@DavidB我从gskinner切换到[regex101.com](http://regex101.com)/ [debuggex.com] (http://debuggex.com),因为在某些情况下,来自gskinner的底层工程似乎与JS/PCRE引擎不同,导致错误的结果。在上述两个工具中,您都可以切换引擎,这是非常完美的。 –

+0

好的提示 - 非常感谢 – DavidB

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>