0

我有一个用 VBScript 编写的遗留代码,它使用正则表达式,我需要用 c# 重写这段代码。不幸的是,我无法将带有“Submatches”集合的 VBScript RegEx 类映射到相应的 C# 代码。

这是 VBScript:RegExp=CreateObject("VBScript.RegExp"); RegExp.Pattern = ' 一些模式 RegExp.IgnoreCase=True; RegExp.Global=真;RegExp.Multiline=真;

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”循环中的“匹配”对象是一个“对象”,没有任何“子匹配”成员。如何在 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 回答