在c#的正则表达式中,我们可以写一个正则表达式,给一个组取一个名字,例如,
(?<One>abc)
但是,在类 System.Text.RegularExpressions.Group 中,没有组名称的属性。我们能得到名字的唯一方法是
System.Text.RegularExpressions.GetGroupNames()
为什么他们不能在 Group 类中为名称添加一个属性?是否有特殊原因不按设计这样做?
编辑: 我在尝试使用以下功能时遇到了这个问题:
Regex.Replace(string input,
string pattern,
MatchEvaluator evaluator
)
我只想使用同一个求值器来处理基于不同正则表达式的多个替换。如果该组有一个名称属性,在求值器内部我可以通过查看它的名称来判断它是哪个正则表达式。但是,没有这样的属性。
我最终通过使用闭包并使用 GetGroupNames 做到了这一点,但我仍然认为它应该具有 name 属性。如果组没有名称,则该属性可以为空。
最佳答案
不给出 Group
背后的逻辑一个Name
在 API 中,如果您已检索到 Group
来自 GroupCollection
通过采用 int
的索引器,那么该组可能不是一个命名的组;否则,您可能更愿意通过采用 string
的索引器检索它.
另一方面,如果您通过采用 string
的索引器检索了组, 那么你已经知道组的名称了。
关于c# - 为什么 System.Text.RegularExpressions.Group 没有 Name 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14026633/