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

如何RegEx替换命名组

如何解决《如何RegEx替换命名组》经验,为你挑选了1个好方法。

我需要使用RegEx.Replace来替换输入字符串中的某些命名组.

所以我可能会有这样的模式:

"^(?.+)(?(\d{2})|CM|RM|PM|CN|RN){1}(?(\d{2})|CM|RM|PM|CN|RN){1}((#(?[#,\.\+\-%0]+))*)$"

使用带有MatchEvaluator的Regex.Replace替换CM,RM等标记.但是,这应该只替换FirstPeriod和LastPeriod组中的字符.

输入示例: "FIELDCNS 01CM"

期望的输出: "FIELDCNS 0104"

输出不正确: "FIELD**04**S 0104"

这是可能的还是我最好只是拔出我想要更换和重新组装的部件?



1> IRBMe..:

我不完全确定我理解你所要求的是什么,但是如果你想要在正则表达式匹配的部分之间替换一些字符串,那么诀窍是捕获你不想要替换的所有部分.例如,"blah"要用"XXXXX"s 替换所有s 但只在"foo"和a之间"bar",你可以这样做:

Dim regex As Regex = new Regex("(foo.*)blah(.*bar)")
Console.WriteLine(regex.Replace( _
    "blah foo bar baz blah baz bar blah blah foo blah", "$1XXXXX$2"))
Console.ReadLine()

blah foo bar baz XXXXX baz bar blah blah foo blah

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