c# - 为什么 System.Text.RegularExpressions.Group 没有 Name 属性?

标签 c# regex regex-group

在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/

相关文章:

python - 正则表达式 Findall 在 Linux 中挂起

java - 在 List.contains(String) 的情况下部分匹配字符串

php - 用于拼写错误的全文搜索的正则表达式

c# - 从 C# 调用 soap 服务

c# - 尝试将 C++ 指针编码为 unsigned long 到 C# ulong

javascript - 有没有办法使用 gulp 删除 require.js Define([...]) 包装器的所有实例?

java - 无法将多个正则表达式模式添加到数组列表中

python - 提取前缀和多个后续匹配项

c# - 将 Asp 单选按钮属性(值)设置为字符串

c# - 如何将 DBNull 检查到 linq 或 int32 中?