我怎么能代替C#正则表达式来修改所有匹配的HREF
<a href="page">Text</a>
与
<a href="page.html">Text</a>
其中page
和Text
可以是任何字符集?
我怎么能代替C#正则表达式来修改所有匹配的HREF
<a href="page">Text</a>
与
<a href="page.html">Text</a>
其中page
和Text
可以是任何字符集?
这将工作。请注意,我只捕获href内部的任何内容。
resultString = Regex.Replace(subjectString, @"(?<=<a[^>]*?\bhref\s*=\s*(['""]))(.*)(?=\1.*?>)", "$2.html");
并将.html附加到它。您可能希望将其更改为您的需求。
编辑:火焰战争开始之前。是的,它会适用于您的具体示例,不适用于互联网中所有可能的html。
你不应该用正则表达式解析HTML。详情请参阅 this question的回答。
UPD:正如TrueWill指出的那样,您可能希望使用Html Agility Pack进行替换。但是在某些特殊情况下,FailedDev提出的正则表达式将会执行,不过我会稍微修改它,使其看起来像这样:@"(?<=<a\b[^>]*?\bhref\s*=\s*(['""]))(.*)(?=\1.*?>)"
(在<a
之后放置\b
以排除以“a”开头的其他标记)。
我不想解析HTML,我试图在html文件中进行字符串替换。 – Justin808
一个简单的正则表达式就是'(。*?)'查找零件。 – jCoder
@ Justin808但要正确地做到这一点,实际上你需要解析文档。例如,你可能会想忽略脚本和评论。 – Gebb