如何用.net中的新String替换第n个正则表达式组?
我有一个像这样的管道分隔字符串:
等等|等等|等等|等等|等等|等等|等等|等等|等等| oldDate |等等|等等|
我想用新的日期替换第10部分的内容。我能够将旧日期与以下代码相匹配:
'create a group with the first 9 non-pipes followed by a pipe, a group with the old date followed by a pipe, and sub-group of just the old date.
Dim pipeRegEx As New RegularExpressions.Regex("(([^|]*|){9})(([^|]*)|)")
'the sub-group is the 4th group ordinal in the match GroupCollection
Dim oldDate as String=pipeRegEx.Match(strMessage).Groups(4).Value
但是,我无法弄清楚如何用新文本重新组织该组。我试过了:
pipeRegEx.Replace(strMessage, "$4", newDate) 'where newDate is a string var
但这会返回原始消息,就像它无法找到第4组一样。我无法用匹配的日期替换字符串,因为字符串中有多个日期(orderDate,receivedDate等),并且可能偶然匹配其中一个日期。
有谁知道如何替换这个文字?
在此先感谢您的帮助。
没有找到相关结果
已邀请:
6 个回复
蓄荣糖些
。这意味着它没有考虑你在theRegEx对象pipeRegEx上调用它而是查找文字字符串“$ 4”的事实。 我会使用零宽度后视
和零宽度前ѭ4重写我的表达式,以便它只匹配第9项(并将其保留为字符串而不是RegEx)。然后你会打电话:
RegEx语法资源:http://www.regular-expressions.info/reference.html
阀傻
。
如果您确实需要使用正则表达式,请考虑使用
:
替换工作相反 - 您使用组来保持字符串中的标记,而不是将它们移出。
粳饶瓢部
版本,你实际上并没有使用你的正则表达式找到匹配,而是使用
找到一个匹配,它不是。这就是为什么要取回原始字符串的原因。 我会做这样的事情,以便用新的日期替换相应的组
然后将您的列表重新组合在一起。
屉杆绊
(你必须重新插入
,因为正则表达式会消耗它。)
涸坍饺
然后
要么
雇砰