在正则表达式中替换多个捕获的组

时间:2012-02-09 02:26:43

标签: .net regex vb.net replace capture-group

VB2005:我现在已经看了几个小时的正则表达式,似乎无法理解我的情况下的.Replace。我正在寻找两个字段,然后我想用新值替换这些字段。所以我的字符串看起来像这样:

Dim myInputString as string ="RTEMP                 MIN<240  MAX<800"

我的正则表达式是

dim ptn as string = "RTEMP\s{17}MIN<(?<min>(\d|\s){1,3})\s{1,3}MAX<(?<max>(\d|\s){1,3})\s{1,12}"
Dim MyRegex As Regex = New Regex(ptn, RegexOptions.IgnoreCase)

并且效果很好,它捕获了我的两个字段。 现在我有了新的值

dim newMin as integer = 300
dim newMax as integer = 999

但似乎无法弄清楚如何一举取代这两个值

Dim result As String = MyRegex.Replace(myInputString, MyRegexReplace)

我在MyRegexReplace中放了什么?这是一个简单的两个值替换,但我可能更多,所以认为必须有一种方法来做到这一点,但需要帮助。

由于 AGP

1 个答案:

答案 0 :(得分:0)

由于您有两个不同的值可以交换到这两个字段,您不想使用2个单独的Regex操作吗?

但是如果你想使用一个Regex操作,你可以使用MatchEvaluator:

Dim result As string = MyRegex.Replace(myInputString, ReplaceField)

Private Function ReplaceField(match As Match) As String
    ' Use the Index property of the Match to determine what value to use as replacement
End Function