【发布时间】:2014-05-29 15:07:50
【问题描述】:
我有一个简单的编辑器,允许人们使用它来更新网站部分的文本。 当我实际呈现它们的内容时,我允许使用 html 替换几个伪标签。我想使用正则表达式来定位这些标签并用适当的 html 标记替换它们。
基本上会有一个文本块,其中可能包含以下一个或多个嵌入的伪标签,我需要使用 c# 通过正则表达式替换这些标签:
[E]me@myemail.com[/E]
需要变成
<a class='LinkText' href='mailto:me@myemail.com'>me@myemail.com</a>
和
[L text='My Link Text']www.google.com[/L]
需要变成
<a class="MyLinkClass" href="www.google.com">My Link Text</a>
对于电子邮件伪标签,我想出了以下正则表达式,但它不起作用:
Content = Regex.Replace(Content, @"\[E\](?(email)[^<>]+)\[/E\]", "<a class='LinkText' href='mailto:?{email}'>?{email}</a>");
由于我被困在这一方面,我在另一方面也没有取得太大进展。
有什么想法可以让它发挥作用吗?我一直在为这些正则表达式的语法而苦苦挣扎......任何帮助或指导将不胜感激!
【问题讨论】:
-
我没有解析 HTML。我正在解析文字 TEXT,其中仅包含这两个伪标签。
-
你必须只使用正则表达式吗?我会做正则表达式来获取电子邮件。然后我会使用 string.Format 来创建替换文本。然后你可以做一个常规的字符串替换。只是一个替代的想法......