3

VB2005: 私は数時間正規表現を見てきましたが、私の場合は .Replace について頭を悩ませているようです。2 つのフィールドを探しており、それらのフィールドを新しい値に置き換えたいと考えています。したがって、私の文字列は次のようになります。

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)

それはうまく機能し、私の2つのフィールドをキャプチャします。今、私は新しい価値観を持っています

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

しかし、2つの値を一度に置き換える方法がわかりません

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

MyRegexReplace には何を入れますか? これは単純な 2 つの値の置換ですが、おそらくもっと多くの値が必要になるので、これを行う方法が必要だと考えていましたが、助けが必要です。

ありがとうAGP

4

1 に答える 1

0

これらの 2 つのフィールドにスワップする 2 つの異なる値があるため、2 つの個別の正規表現操作を使用したくありませんか?

ただし、1 つの 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
于 2012-02-09T07:46:26.437 に答える