我正在尝试找出如何根据我的需要使用Regex.Replace方法,基本上我需要找到一个特定的单词,它在其两侧没有任何“az”字母,只替换匹配换句话说。
在下面的示例中,我搜索所有“ man ”出现次数并替换为“ coach ”。我使用这个正则表达式模式“[^a-z](man)[^a-z]
”来捕捉我想要的东西。
//String to search
"The man managed the football team"
//After using Regex.Replace I expect to see
"The coach managed the football team"
//But what I actually get is
"The coach coachaged the football team"
答案 0 :(得分:4)
您需要\b
又名word boundary
。
\b assert position at a word boundary (^\w|\w$|\W\w|\w\W)
使用\bman\b
参见演示。
https://regex101.com/r/yG7zB9/31
您的正则表达式将始终替换5
个字符。\b
是0 width assertion
所以它不会占用一个字符。
string strRegex = @"\bman\b";
Regex myRegex = new Regex(strRegex, RegexOptions.Multiline);
string strTargetString = @"The man managed the football team";
string strReplace = @"coach";
return myRegex.Replace(strTargetString, strReplace);