0

我看过这个主题: 如何使用正则表达式将文本括在括号中? 但那是在红宝石上,我不知道我试过的 C# 的模拟

text = System.Text.RegularExpressions.Regex.Replace(text, ' '  + SpecialWord + ' ', " \"\0\" ", System.Text.RegularExpressions.RegexOptions.IgnoreCase);

但这并没有插入我匹配的单词。那么如何用引号将匹配的单词括起来呢?

4

2 回答 2

1

使用$而不是\反向引用。另外,将您的特殊词放在括号中并引用该子组,否则,您将获得完整的匹配字符串:

text = System.Text.RegularExpressions.Regex.Replace(
                         text, "\\b("  + SpecialWord + ")\\b", " \"$1\" ", 
                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

解释:

  • \b是单词边界,即空格、字符串结尾、句号等。
  • $0将匹配整个匹配,即包括单词边界,而$1匹配第一个子组,即括号中的部分。
于 2011-04-12T16:02:21.393 回答
0

尝试使用\b来匹配单词边界,而不是空格。

你需要使用$0而不是\0太。

text = Regex.Replace(text, @"\b" + SpecialWord + @"\b", @" ""$0"" ", RegexOptions.IgnoreCase);
于 2011-04-12T16:01:41.893 回答