正则表达式替换为字符串

时间:2012-07-30 15:22:45

标签: c# regex winforms

我正在寻找regex repalce命令来替换特定的字符串。假设我希望在HTML代码中将ss替换为<u>ss</u>。 因此,如果我的输入为<p style="">ss</p>,我希望看到输出<p style=""><u>ss</u></p>

但我不想要像

这样的词

<b>Issues</b>被替换为<b>I<u>ss</u>es</b>

所以我需要检查它是否是一个完整的单词或单词的一部分。

我想要regex.replace

">ss<"&amp; > ss <

有没有更好的解决方案?

6 个答案:

答案 0 :(得分:2)

不考虑正则表达式不是HTML使用的最佳工具,您可以使用\bss\b表达式来确保在匹配的字符串之前和之后有一个单词边界。

答案 1 :(得分:1)

更好的解决方案是使用HTML解析器库,解析html并替换标签。 结帐HTML Agility Pack

话虽如此,如果您仍然坚持使用正则表达式,因为您知道您的数据是特定格式,那么遵循正则表达式就足以满足您的需求。

[>]\s?ss\s?[<]
  • [&gt;]是关闭代码
  • [&lt;]是开放标记
  • \ s是可选的空格
  • ss是模式

答案 2 :(得分:1)

你不应该使用Regex来解析html,regex是为常规语言设计的,其中HTML是无上下文的。

我强烈建议HTML Dom Parser

答案 3 :(得分:1)

  string input = "<p style="">ss</p>  <b>Issues</b>";
  string pattern = "(?<=\>)ss(?=\<)";
  string replacement = "<u>ss</u>";
  Regex rgx = new Regex(pattern);
  string result = rgx.Replace(input, replacement);
  Console.WriteLine("Original String: {0}", input);
  Console.WriteLine("Replacement String: {0}", result);

答案 4 :(得分:1)

这样的简单解决方案怎么样:

public string ReplaceHtmlTagContent(string value, string search) {
    return value.Replace(">" + search + "<", "><u>" + replace + "</u><")
}

答案 5 :(得分:0)

我不确定我到底知道你想要什么,但这有什么不对:

dataString = dataString.Replace(">ss<", "><u>ss</u><").Replace("> ss <", "><u> ss </u><");