我正在使用C#regex解析文本 . 我想为每场比赛只替换一个特定组 . 我在这里是怎么做的:
void Replace(){
string newText = Regex.Replace(File.ReadAllText(sourceFile), myRegex, Matcher, RegexOptions.Singleline);
//.......
}
void string Matcher(Match m){
// how do I replace m.Groups[2] with "replacedText"?
return ""; // I want to return m.Value with replaced m.Group[2]
}
6 回答
这应该这样做:
示例:http://rextester.com/DLGVPA38953
EDIT: 虽然以上是您编写的问题的答案,但您可能会发现实际场景的零宽度外观更简单:
示例:http://rextester.com/SOWWS24307
这个怎么样?
您可以使用
MatchEvaluator
:试试这个 .我在stackoverflow中发现了一个与此相关的帖子:watch This
Regex.Replace
将始终替换所提供的正则表达式 matched 的所有内容 .你有两种可能性:
要么
您提供的信息不足以更具体地回答您的问题 . 例如 . 你真的需要
MatchEvaluator
吗?如果您想为每场比赛提供单独的替换字符串,则仅需要这样做 .下面的代码将匹配并根据groupValues集合构造替换字符串 . 此集合指定组索引和用其替换值的文本 .
与其他解决方案不同,它不需要将整个匹配包含在组中,只需要包含要在组中匹配的部分 .