4

我正在寻找 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<"&> ss <

对此有更好的解决方案吗?

4

6 回答 6

2

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

于 2012-07-30T15:25:50.130 回答
1

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

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

[>]\s?ss\s?[<]
  • [>] 是关闭标签
  • [<] 是开放标签
  • \s 是可选的空白
  • ss 是模式
于 2012-07-30T15:24:25.343 回答
1

您不应该使用正则表达式来解析 html,正则表达式是为常规语言设计的,其中 HTML 是上下文无关的。

我强烈建议使用HTML Dom Parser

于 2012-07-30T15:24:44.493 回答
1

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

public string ReplaceHtmlTagContent(string value, string search) {
    return value.Replace(">" + search + "<", "><u>" + replace + "</u><")
}
于 2012-07-30T15:43:34.020 回答
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);
于 2012-07-30T15:31:59.377 回答
0

不确定我是否完全理解您在这里想要什么,但这有什么问题:

dataString = dataString.Replace(">ss<", "><u>ss</u><").Replace("> ss <", "><u> ss </u><");
于 2012-07-30T15:35:20.407 回答