加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

vb.net – 如何RegEx替换命名组

发布时间:2020-12-17 07:29:42 所属栏目:百科 来源:网络整理
导读:我需要使用RegEx.Replace来替换输入字符串中的某些命名组. 所以我可能会有这样的模式: "^(?NoReplace.+)(?FirstPeriod(d{2})|CM|RM|PM|CN|RN){1}(?LastPeriod(d{2})|CM|RM|PM|CN|RN){1}((#(?NumberFormat[#,.+-%0]+))*)$" 使用带有MatchEvaluator的Reg
我需要使用RegEx.Replace来替换输入字符串中的某些命名组.

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

"^(?<NoReplace>.+)(?<FirstPeriod>(d{2})|CM|RM|PM|CN|RN){1}(?<LastPeriod>(d{2})|CM|RM|PM|CN|RN){1}((#(?<NumberFormat>[#,.+-%0]+))*)$"

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

输入示例:
“FIELDCNS 01CM”

期望的输出:
“FIELDCNS 0104”

输出不正确:
“FIELD ** 04 ** S 0104”

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

解决方法

我不完全确定我理解你所要求的是什么,但是如果你想要在正则表达式匹配的部分之间替换一些字符串,那么诀窍是捕获你不想要替换的所有部分.例如,要用“XXXXX”替换所有“blah”,但只能在“foo”和“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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读