如果正则表达式的href值为空,则用锚标题替换锚标记值

时间:2017-11-16 10:11:45

标签: c# regex

如果任何锚标记的href属性为空,我试图用锚标题值替换锚标记值。

喜欢

<a xlink:href="">Lorem Ipsum</a>  is simply dummy text of the printing and typesetting industry<a xlink:href ="http://google.com">Google</a>. 

如果我尝试使用以下正则表达式:

<a [^>]+>(.*?)<\/a>

DEMO http://regexr.com/3h6on

然后输出我低于

Lorem Ipsum is simply dummy text of the printing and typesetting industry Google. 

它用锚文本值替换了两个锚标记,我需要替换那些href属性值为空的锚标记。

我需要一个如下所示的输出

Lorem Ipsum is simply dummy text of the printing and typesetting industry<a xlink:href ="http://google.com">Google</a> 

2 个答案:

答案 0 :(得分:2)

我的方法看起来很混乱但是对于你提供的测试链接,它似乎就像你想要的那样工作:

<a [^>]+?(?=href=(?:"|')(?:"|'))[^>]*?>(.*?)<\/a>

Try it with this link.

我在正则表达式中添加了以下内容

[^>]+?(?=href=(?:"|')(?:"|'))[^>]*?

。在我添加的部分的开头和结尾处的通配符只是用于匹配&lt;之间的任何其他属性或空格。 &GT;

括号内的正则表达式称为positive lookahead。这意味着它将匹配括号内的任何内容,但不会将其包含在结果中。

正向前瞻与href后跟空字符串相匹配。

请注意,如果href = expression之后的引号不匹配,我的正则表达式仍会匹配

我希望这能回答你的问题。

答案 1 :(得分:1)

请尝试:<a[^<]+href=(['"]{2})\1?[^>]*?>([^<>]*)<\/a>

Try it here