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"
^^^^^^