可以在.NET的System.Text.RegularExpressions中使用命名捕获中的破折号吗?

问题描述:

是否有可能做类似(?'A-B'\ s *)?可以在.NET的System.Text.RegularExpressions中使用命名捕获中的破折号吗?

+0

这取决于你想表达应该匹配。给我们一些例子,我们可以试着弄清楚你的意思。 – Gareth 2008-11-04 17:10:16

从文档:

(< NAME1名2>子表达式?)

(平衡组定义。)删除 在 组NAME1的先前 定义的组NAME2并存储定义 之前定义的name2组与 当前组之间的间隔。如果未定义组名称2为 ,则匹配回溯。因为 删除NAME2的最后一个定义 揭示 NAME2的先前定义,这构造允许捕获为组名2的堆叠 使用 作为用于跟踪 嵌套结构如括号中的计数器。 在这个结构中,name1是可选的。 您可以使用单引号代替 尖括号;例如, (?'name1-name2')。

只有在正则表达式中存在一个名为B的组时,您的示例才有效,并且您打算执行A-B隐含的操作。

如果你问一个组名是否可以有一个破折号,没有。短划线在命名组中具有特殊含义。

欲了解更多信息,请参阅the example in this topic.