我试图用一个正则表达式从文件中提取所有数据。由于存在可选的(?
,*
)和重复的(*
,+
)表达式,因此很难通过捕获进行枚举,至少在可读和可以理解的时尚。因此,我正在使用命名组。但是数据是类似于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
如何检索当前组的命名子组?
答案 0 :(得分:0)
您是否考虑过使用XSLT而不是使用Regex?还是XLinq?
答案 1 :(得分:0)
我建议您将组重命名为“CenterLAT”,“CenterLON”,“PointLAT”和“PointLON”。您可以从mtch.Groups("Center").Captures
集合中获得所需内容,但不能按名称索引该集合。