正则表达式只替换匹配的字符串 - C#

时间:2015-06-26 12:10:45

标签: regex

我正在尝试找出如何根据我的需要使用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"

1 个答案:

答案 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个字符。\b0 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);