我正试图找到寻找特定模式的最佳方法,然后 替换模式的结尾部分。这是一个简单的示例(在 C# 中):
//查找任何以括号或下划线开头的年份值
string patternToFind = "[[_]2007";
Regex yearFind = new Regex(patternToFind);
//我想将这些值中的任何一个更改为 x2008,其中 x 是文本中最初的括号或下划线。我试图使用 Regex.Replace(),但不知道它是否可以应用。
如果一切都失败了,我可以使用 MatchCollection 找到 Matches,然后将 2007 值换成 2008;但是,我希望有更优雅的东西
MatchCollections matches = yearFind.Matches(" 2007 [2007 _2007");
foreach (Match match in matches){
//use match to find and replace value
}
请您参考如下方法:
您的模式与描述的不符:如描述的那样,您需要以“\[|_”(竖线表示 OR)开头,而您的实际问题的解决方案是 regex分组。将您感兴趣的模式部分包围在方括号“(”和“)”中,您可以在替换器中访问它们。
因此您需要这样的模式:/^(\[|_)2007/
编辑:.NET 代码
string s = Regex.Replace(source, @"^(\[|_)2007", @"$12008");
注意误解了要求,修改了模式
