将VBScript.Regex重写为C#Regex代码

本文关键字:C#Regex 代码 重写 VBScript Regex | 更新日期: 2023-09-27 18:29:27

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

这是VBScript:RegExp=创建对象("VBScript.RegExp");RegExp.Pattern='某种模式RegExp.IgnoreCase=True;RegExp.Global=真;RegExp.Multinle=True;

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

问题是:我不知道VBScript的"Submatches"的等效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"对象是一个"对象",没有任何"Submatch"成员。如何在C#中实现Submatches?

将VBScript.Regex重写为C#Regex代码

试试这个:

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
    }
}