我的Regex.Replace不起作用

时间:2013-01-28 11:51:15

标签: c# html regex string

嘿我正在尝试用字符串替换html。我需要<strong>text</strong> <b>text</b> 等(我意识到b标签被认为是过时的)

我知道我不应该使用正则表达式来解决这个问题,但这是我唯一的选择

我的代码:

//replace strong
text = Regex.Replace(text, "<strong>.*?</strong>", "<b>$1</b>");

//replace em
text = Regex.Replace(text, "<em>.*?</em>", "<i>$1</i>");

这里的问题是正则表达式替换标签将文本设置为$1。怎么避免这个? (我在C#btw。)

2 个答案:

答案 0 :(得分:5)

$1将使用匹配中第一个捕获的值。但是你没有在匹配中指定任何捕获组,因此$1没有任何替代。

使用(…)捕获正则表达式:

text = Regex.Replace(text, "<strong>(.*?)</strong>", "<b>$1</b>");

答案 1 :(得分:2)

请注意,以下答案只是一种解决方法;写一个正确的正则表达式会更好。

var text = "<strong>asfdweqwe121</strong><em>test</em>";

text = text.Replace("<strong>", "<b>");
text = text.Replace("</strong>", "</b>");
text = text.Replace("<em>", "<i>");
text = text.Replace("</em>", "</i>");