我需要使用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"
这是可能的还是我最好只是拔出我想要更换和重新组装的部件?
我不完全确定我理解你所要求的是什么,但是如果你想要在正则表达式匹配的部分之间替换一些字符串,那么诀窍是捕获你不想要替换的所有部分.例如,"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