我将尝试找到一个正则表达式来匹配精确的单词并用另一个单词替换它。但是,我使用的表达式会替换以特定字符@开头的单词。
以下是我的代码:
这是结果:
以下是我的代码:
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不是null)
目前,我只需要避免匹配那些前面有@
字符的单词。
@
和t
之间存在着一个单词边界。如果您想仅替换由空格包围的单词,请尝试使用@"(?<!\S){0}(?!\S)"
。在这种情况下,您认为什么是单词边界?或者您是否只想在@
后面避免匹配?然后请使用@"\b(?<!@){0}\b"
。 - Wiktor Stribiżewif(test ...)
中的test
应该被替换,这样(?<!\S)...
就无法匹配。我们需要澄清要求并明确说明哪些字符被视为“单词的一部分”,哪些字符不是。 - Dmitry Egorov