0

正規表現を使用する VBScript で記述されたレガシー コードがあり、このコードを C# で書き直す必要があります。残念ながら、「Submatches」コレクションを持つ VBScript RegEx クラスをそれぞれの C# コードにマップすることはできません。

これは VBScript です: RegExp=CreateObject("VBScript.RegExp"); RegExp.Pattern = ' パターン RegExp.IgnoreCase=True; RegExp.Global=True; RegExp.Multiline = True;

Matches=RegExp.Execute(someText);
For Each Match In Matches Do
    If Match.SubMatches(4) <> Nothing Then
    ' some code goes next

問題は次のとおりです。VBScript の「サブマッチ」に相当する C# Regex メソッドが何であるかわかりません。

私のC#:

        var Regex = new Regex(@"(\{\n?)|(""(""""|[^""]*)*"")|([^\},\{]+)|(,\n?)|(\}\n?)",  RegexOptions.IgnoreCase | RegexOptions.Multiline);
        var Matches = Regex.G(textBox1.Text);

        var Tree = new SimpleTree<string>();

        foreach (var Match in Matches)
        {

        }

「foreach」ループの「Match」オブジェクトは「オブジェクト」であり、「サブマッチ」メンバーはありません。C#でサブマッチを実装するには?

4

1 に答える 1

1

これを試して:

Regex re = new Regex(@"(\{\n?)|(""(""""|[^""]*)*"")|([^\},\{]+)|(,\n?)|(\}\n?)",  RegexOptions.IgnoreCase | RegexOptions.Multiline);
MatchCollection matches = re.Matches(textBox1.Text);

var Tree = new SimpleTree<string>();

foreach (Match m in matches)
{
    if( m.Groups(4).Value  != null )
    {
          // do your stuff here
    }
}
于 2013-08-28T05:47:31.150 に答える