Skip to main content
 首页 » 编程设计

c#之正则表达式之仅替换表达式的最后一部分

2024年01月22日27luoye11

我正试图找到寻找特定模式的最佳方法,然后 替换模式的结尾部分。这是一个简单的示例(在 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"); 

注意误解了要求,修改了模式