正则表达式 - lookahead / LookBehind断言

时间:2014-08-02 17:49:40

标签: c# asp.net regex

我想在下面的文字

上测试正则表达式
  <div class="creditItem"><a href="/maren_addy/beauty-ful/"></a></div>      
<a href="abc.aspx">test</a>
<div class="creditItem"><a href="/maren_addy/beauty-ful2/"></a> </div>  

正则表达式

  

(小于?=类= “creditItem” &GT;? HREF = “)。?(?=”)

预期产出

/maren_addy/beauty-ful/
/maren_addy/beauty-ful2/

但是得到这个输出

/maren_addy/beauty-ful/
abc.aspx
/maren_addy/beauty-ful2/

有人可以解释并纠正正则表达式

由于

2 个答案:

答案 0 :(得分:0)

从索引1获取匹配的组

(?<=class="creditItem"><a href=")([^"]*)

DEMO

阅读Want to Be Lazy? Think Twice.

答案 1 :(得分:0)

你可以试试下面的正则表达式,

(?<=class="creditItem"><a href=").*?(?=")

DEMO

C#代码将是,

String input = @"  <div class=""creditItem""><a href=""/maren_addy/beauty-ful/""></a></div>      
<a href=""abc.aspx"">test</a>
<div class=""creditItem""><a href=""/maren_addy/beauty-ful2/""></a> </div>  ";
Regex rgx = new Regex(@"(?<=class=""creditItem""><a href="").*?(?="")");
foreach (Match m in rgx.Matches(input))
Console.WriteLine(m.Groups[0].Value);

IDEONE