当前位置:  开发笔记 > 编程语言 > 正文

正则表达式 - 仅替换表达式的最后一部分

如何解决《正则表达式-仅替换表达式的最后一部分》经验,为你挑选了1个好方法。

我试图找到找到特定模式的最佳方法,然后替换模式的结尾部分.这是一个快速示例(在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误解了要求,修改了模式



1> annakata..:

您的模式不能像描述的那样工作:如您所述,您需要以" \[|_" 开头(管道表示OR),并且您实际问题的解决方案是正则表达式分组.用括号"("和")"围绕你感兴趣的模式部分,你可以在替换器中访问它们.

因此,您需要一个这样的模式: /^(\[|_)2007/

编辑:.NET代码

string s = Regex.Replace(source, @"^(\[|_)2007", @"$12008");

nb误解了要求,修改了模式

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有