【发布时间】:2012-12-11 04:30:36
【问题描述】:
在c#的正则表达式中,我们可以写一个正则表达式,给一个组赋值,例如,
(?<One>abc)
但是,在 System.Text.RegularExpressions.Group 类中,没有组名称的属性。我们得到名字的唯一方法是
System.Text.RegularExpressions.GetGroupNames()
为什么他们不能在名称的 Group 类中放置一个属性?是否有特殊原因不按设计这样做?
编辑: 当我尝试使用以下功能时遇到了这个问题:
Regex.Replace(string input,
string pattern,
MatchEvaluator evaluator
)
我想使用同一个求值器来处理基于不同正则表达式的多个替换。如果组有 name 属性,在 evaluator 内部,我可以通过查看它的名称来判断它是哪个正则表达式。但是,没有这样的属性。
我最终通过使用闭包并使用 GetGroupNames 来做到这一点,但我仍然认为它应该具有 name 属性。如果组没有名称,则属性可以为空。
【问题讨论】:
-
你的问题不是很清楚。如果您发布了您希望工作的代码类型的代码示例,这将有助于澄清您的问题。
-
如果你创建了正则表达式,你不应该知道组名是什么吗?
-
除非设计团队的某个人看到这一点,否则我们所能做的就是推测。我的猜测是,它从来没有被视为足够重要以保证开发和测试时间。
标签: c# regex regex-group