如何用.net中的新String替换第n个正则表达式组?

前端之家收集整理的这篇文章主要介绍了如何用.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等),并且可能偶然匹配其中一个日期.

有谁知道如何替换这个文字

在此先感谢您的帮助.

解决方法

Replace method是静态的.这意味着它没有考虑你在theRegEx对象pipeRegEx上调用它而是查找文字字符串“$4”的事实.

我会使用零宽度后视(?< =表达式)和零宽度前瞻(?=表达式)重写我的表达式,以便它只匹配第9项(并将其保留为字符串而不是正则表达式).然后你会打电话:

RegEx.Replace(strMessage,pipeRegEx,newDate);

RegEx语法资源:http://www.regular-expressions.info/reference.html

猜你在找的正则表达式相关文章