c#Regex修改所有匹配的href

时间:2011-11-04 17:33:39

标签: c# regex

如何替换

<a href="page">Text</a>

<a href="page.html">Text</a>

其中pageText可以是任何字符集吗?

2 个答案:

答案 0 :(得分:1)

您不应该使用正则表达式解析HTML。有关详细信息,请参阅 this question 的答案。

UPD:正如TrueWill指出的那样,您可能希望使用Html Agility Pack进行替换。但是在一些特殊情况下,FailedDev提出的正则表达式会做,虽然我会略微修改它看起来像这样:@"(?<=<a\b[^>]*?\bhref\s*=\s*(['""]))(.*)(?=\1.*?>)"(在\b之后添加<a以排除其他标签“A”)。

答案 1 :(得分:1)

这会奏效。请注意,我只捕获href内的任何内容。

resultString = Regex.Replace(subjectString, @"(?<=<a[^>]*?\bhref\s*=\s*(['""]))(.*)(?=\1.*?>)", "$2.html");

将.html附加到它上面。您可能希望根据自己的需要进行更改。

编辑:在火焰战争开始之前。是的,它适用于您的具体示例,而不适用于互联网上所有可能的HTML。