我试图找到找到特定模式的最佳方法,然后替换模式的结尾部分.这是一个快速示例(在C#中):
//查找以括号或下划线开头的任何年份值
string patternToFind = "[[_]2007"; Regex yearFind = new Regex(patternToFind);
//我想将这些值中的任何一个更改为x2008,其中x是文本中最初的括号或下划线.我试图使用Regex.Replace(),但无法弄清楚它是否可以应用.
如果所有其他方法都失败了,我可以使用MatchCollection找到匹配,然后用2008切换2007的值; 但是,我希望有更优雅的东西
MatchCollections matches = yearFind.Matches(" 2007 [2007 _2007"); foreach (Match match in matches){ //use match to find and replace value }
annakata.. 5
您的模式不能像描述的那样工作:如您所述,您需要以" \[|_
" 开头(管道表示OR),并且您实际问题的解决方案是正则表达式分组.用括号"("和")"围绕你感兴趣的模式部分,你可以在替换器中访问它们.
因此,您需要一个这样的模式: /^(\[|_)2007/
编辑:.NET代码
string s = Regex.Replace(source, @"^(\[|_)2007", @"$12008");
nb误解了要求,修改了模式
您的模式不能像描述的那样工作:如您所述,您需要以" \[|_
" 开头(管道表示OR),并且您实际问题的解决方案是正则表达式分组.用括号"("和")"围绕你感兴趣的模式部分,你可以在替换器中访问它们.
因此,您需要一个这样的模式: /^(\[|_)2007/
编辑:.NET代码
string s = Regex.Replace(source, @"^(\[|_)2007", @"$12008");
nb误解了要求,修改了模式