Замените несколько захваченных групп в регулярных выражениях - PullRequest
3 голосов
/ 09 февраля 2012

VB2005: Я уже несколько часов смотрю на регулярные выражения и, похоже, не могу разобраться с. Заменить мой случай. Я ищу два поля, а затем я хочу заменить эти поля новыми значениями. Итак, моя строка выглядит так:

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 голосов
/ 09 февраля 2012

Поскольку у вас есть 2 различных значения для замены в этих 2 полях, не хотите ли вы использовать 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
...