正则表达式嵌套组

时间:2010-09-20 19:31:50

标签: .net regex

我试图用一个正则表达式从文件中提取所有数据。由于存在可选的(?*)和重复的(*+)表达式,因此很难通过捕获进行枚举,至少在可读和可以理解的时尚。因此,我正在使用命名组。但是数据是类似于XML的结构; neseted元素可以有复杂的元素。所以我使用嵌套的名称组。但是,我已经捕获了一个组,如何按名称检索嵌套组?

Dim mtch = System.Text.RegularExpressions.Regex.Match(fullText, _
                                       "\s+(?<PolyID>\d+)" & _
                                       "\s+(?<Center>" & _
                                            "(?<LAT>\-?\d\.\d+E\+\d{2})" & _
                                            "\s+(?<LON>\-?\d\.\d+E\+\d{2})" & _
                                        ")\n(?<Point>\s+" & _
                                            "(?<LAT>\-?\d\.\d+E\+\d{2})" & _
                                            "\s+(?<LON>\-?\d\.\d+E\+\d{2})" & _
                                        "\n)+END\n", _
                                        System.Text.RegularExpressions.RegexOptions.Singleline)

我正在尝试获取

mtch.Group("Center").Group("LAT").Value

如何检索当前组的命名子组?

2 个答案:

答案 0 :(得分:0)

您是否考虑过使用XSLT而不是使用Regex?还是XLinq?

答案 1 :(得分:0)

我建议您将组重命名为“CenterLAT”,“CenterLON”,“PointLAT”和“PointLON”。您可以从mtch.Groups("Center").Captures集合中获得所需内容,但不能按名称索引该集合。