什么构成有效的群组名称?
var re = new Regex(@"(?<what-letters-can-go-here>pattern)");
答案 0 :(得分:4)
与\w
匹配的任何有效[a-zA-Z0-9_]
但未确认..
答案 1 :(得分:2)
允许的字符为[a-zA-Z0-9_]
name 不得包含任何标点字符,也不能以数字开头。
但那不是很具体,所以让我们来看看源代码:
source code for the class System.Text.RegularExpressions.RegexParser向我们显示允许的字符基本上是[a-zA-Z0-9_]
。但要非常精确,方法中有这个注释用于检查字符是否对捕获组名称有效:
internal static bool IsWordChar(char ch) { // According to UTS#18 Unicode Regular Expressions (http://www.unicode.org/reports/tr18/) // RL 1.4 Simple Word Boundaries The class of <word_character> includes all Alphabetic // values from the Unicode character database, from UnicodeData.txt [UData], plus the U+200C // ZERO WIDTH NON-JOINER and U+200D ZERO WIDTH JOINER. return CharInClass(ch, WordClass) || ch == ZeroWidthJoiner || ch == ZeroWidthNonJoiner; }
如果您想自己测试一下,this .NET fiddle确认在捕获组的名称中有许多非标点字符不允许: