C# 查找正则表达式以匹配specefic单词

C# 查找正则表达式以匹配specefic单词,c#,regex,C#,Regex,我试图找到一个正则表达式来匹配精确的单词,并用另一个替换它。但我使用的表达方式,甚至可以替换以@等特定字符开头的单词 这是我的密码: static public string ReplaceWholeWord(this string original, string wordToFind, string replacement, RegexOptions regexOptions = RegexOptions.None){ string pattern = String.Forma

我试图找到一个正则表达式来匹配精确的单词,并用另一个替换它。但我使用的表达方式,甚至可以替换以@等特定字符开头的单词

这是我的密码:

static public string ReplaceWholeWord(this string original, string wordToFind, string replacement, RegexOptions regexOptions = RegexOptions.None){
       string pattern = String.Format(@"\b{0}\b", wordToFind);
       string ret = Regex.Replace(original, pattern, replacement, regexOptions);
       return ret;
}
结果如下:

var input = "if(@test is not null)";
input.ReplaceWholeWord("test", "x");
结果:如果(@x不为空)


目前,我只需要避免匹配前面有
@
字符的单词。

因为您只想避免匹配前面紧跟
@
符号的整个单词,所以只需要添加一个:


@\b(?在
@
t
之间有一个单词边界。试试
@(?@WiktorStribiżew,我想
测试
应该在
if(test…
)中替换,因此
(?)将无法匹配。我们需要澄清要求并明确说明哪些字符被视为“单词的一部分”还有哪些字符不是。@MoezRebai,请明确说明哪些字符被视为“单词的一部分”还有哪些字符不是。目前我只需要丢弃@character,它似乎与@WiktorStribiżew suggestion一起工作我喜欢第二种解决方案,有点像charm谢谢。请注意,您可以进一步调整它:如果您还需要避免匹配前面带有
的单词,请将不需要的char放入charactere中r类并使用
@“\b(?)?
@"\b(?<!@){0}\b"
    ^^^^^^