![](/img/trans.png)
[英]How to replace a url having brackets with hyperlink/anchor tag in the text C#
[英]How to replace the anchor tag text using C#?
我正在尝试使用正则表达式替换锚标记值
Regex.Match(link, @"<a [^>]*>(.*?)</a>").Groups[1].Value.ToString();
这给了我锚标签文本。
我尝试使用“正则表达式替换”,但是我无法替换确切的文本。
例:
var link="<a href="">Sample text </a>";
var requiredText="new Text";
Regex.Replace(link,"<a [^>]*>(.*?)</a>",requiredText);
请帮我解决这个问题。
我在这里先向您的帮助表示感谢
您正在捕获组中的中间内容。
您可能要做的是捕获组中左右两侧的内容,并在替换中使用这两个捕获组$1
和$2
:
var link=@"<a href="">Sample text </a>";
var requiredText="$1new Text$2";
link = Regex.Replace(link,"(<a [^>]*>).*?(</a>)",requiredText);
Console.WriteLine(link);
// <a href=">new Text</a>
观看C#演示
正则表达式将匹配:
(<a [^>]*>)
捕获组1 .*?
匹配任何char 0+次 (</a>)
捕获组2 如果anchor标签的内容是纯文本(没有其他标签),则可以使用正向后看和前瞻来实现此目的。 通过不使用锚点打开和关闭标签,仅内容将被替换。
/(?<=>)[^<]*(?=<\/a>)/
string anchor = "<a href=\"\">Sample text </a>";
string requiredText = "new Text";
anchor = Regex.Replace(anchor, @"(?<=>)[^<]*(?=<\/a>)", requiredText);
Console.WriteLine(anchor); // <a href="">new Text</a>
说明:
(?<=>)
-与前面的右尖括号(向后看)匹配。 [^<]*
-匹配并使用零个或多个不是尖括号的字符。 (?=<\\/a>)
-匹配后续的封闭锚标记(超前)。 注意:我们不需要知道在后面查找中打开了哪个标签,因为关闭锚点标签必须关闭上一个打开的标签。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.