反向正则表达式匹配集合项?

4

有一种方法可以反转RegEx.MatchCollection中的项吗?

例如,如果MatchCollection包含以下匹配项:

a1
a2
a3

然后我想要反转集合项,这样项索引就是其他值:

a3
a2
a1

保留它们的匹配索引和其他匹配信息,如长度、组等。

1
需要另一个MatchCollection还是可以直接获取Matches并将其反转,例如:var reversed = matches.Cast<Match>().Reverse(); - sa_ddam213
@sa_ddam213 感谢您的评论,使用 Reverse Ienumerable 仍然不足以解决我的问题,我认为只要我能够检索到所需的项目信息,集合类型并不重要,但我不确定,您是专家,再次感谢。 - ElektroStudios
2个回答

6

MatchCollection有些不同,但是它是一个IEnumerable<Match>

 myMatchCollection.Cast<Match>().Reverse()

足够好,也许吧。

谢谢,但我对IEnumerables不是很有经验,我需要将reverseiterator转换为其他类型吗?那么我该如何检索匹配信息呢?尝试使用IEnumerable创建MatchCollection,但'Match'和'Matchcollection'没有'New'构造函数,所以这样的东西行不通:matches = matches.Cast(Of Match)().Reverse().Select(Function(m) New Match(m))。 - ElektroStudios
哎呀,感谢您的时间。我已经将它作为一个数组完成了,并且一切都很好:Dim var = matches.Cast(Of Match)().Reverse().ToArray MsgBox(var.First.Groups(0).Value) - ElektroStudios

0

VB.NET 版本:

 Imports System.Text.RegularExpressions
 Dim matches() As Match = Regex.Matches("ABCDA", "A").Cast(Of Match).Reverse().ToArray()

 MsgBox(matches.First.Index) ' Result: 4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接