2012-02-09 11 views
3

VB2005:私は数時間前から正規表現を見てきました。 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) 

であり、それがうまく機能し、それは私の二つのフィールドをキャプチャします。 は、今私は、新しい値

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

を持っている。しかし、私はMyRegexReplaceに何を置くか

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

1話の一挙に2つの値を交換する方法を見つけ出すように見えるカント?これは単純な2つの値の置き換えですが、Imはこれ以上の可能性があるので、これを行う方法が必要だと考えていましたが、助けが必要です。あなたはこれらの2つのフィールドに交換する2つの異なる値を持っているので

おかげ AGP

+0

それは少しハックですが、あなたができる '」(RTEMP \ sの{17} MIN <)(.. (\ s {1,3} MAX <)(...)(\ s {1,12}) "' \ 1 {newMin} \ 3 {newMax} \ 5 "'に置き換えます。 。 –

+0

にnewMin&newMaxを代入しました。これは最初の部分を取り、新しい値を追加し、中間部分を追加し、新しい値を追加し、最後の部分を追加しますか?ええ、私はそれがどのように動作するかを見ていると思います。しかし、私は20フィールドのためにこれを行う必要があります。これはちょっとした例でした。それを試してみてください。 – sinDizzy

答えて

0

は、あなたは2つの独立した正規表現の操作を使用したくないでしょうか?

しかし、あなたは1つの正規表現の操作を使用したい場合は、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 
+0

ええ、私は2つの正規表現を使用することができますが、これは私が何をしなければならないかの小さな例です。最後に私は20フィールドを新しい値に置き換えています。この方法を試してみましょう。 – sinDizzy

関連する問題