我看过这个主题: 如何使用正则表达式将文本括在括号中? 但那是在红宝石上,我不知道我试过的 C# 的模拟
text = System.Text.RegularExpressions.Regex.Replace(text, ' ' + SpecialWord + ' ', " \"\0\" ", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
但这并没有插入我匹配的单词。那么如何用引号将匹配的单词括起来呢?
使用$
而不是\
反向引用。另外,将您的特殊词放在括号中并引用该子组,否则,您将获得完整的匹配字符串:
text = System.Text.RegularExpressions.Regex.Replace(
text, "\\b(" + SpecialWord + ")\\b", " \"$1\" ",
System.Text.RegularExpressions.RegexOptions.IgnoreCase);
解释:
\b
是单词边界,即空格、字符串结尾、句号等。$0
将匹配整个匹配,即包括单词边界,而$1
匹配第一个子组,即括号中的部分。尝试使用\b
来匹配单词边界,而不是空格。
你需要使用$0
而不是\0
太。
text = Regex.Replace(text, @"\b" + SpecialWord + @"\b", @" ""$0"" ", RegexOptions.IgnoreCase);