当我使用带有正则表达式的Regex类时,我收到以下异常:(?'named a'asdf)
System.ArgumentException: parsing \"(?'named a'asdf)\" - Invalid group name: Group names must begin with a word character.
我的正则表达式有什么问题?
答案 0 :(得分:6)
问题是捕获名称中的空间。删除空格,它工作正常。
从MSDN文档中: “用于名称的字符串不得包含任何标点符号,并且不能以数字开头。您可以使用单引号而不是尖括号;例如,(?'name')。”
如果使用尖括号<>则无关紧要或单引号''表示组名。
答案 1 :(得分:4)
vengafoo提到的MSDN文档的参考文献如下: Regular Expression Grouping Constructs
<强>
(?<name> subexpression)
强>
将匹配的子表达式捕获为组名称或数字名称。使用的字符串 对于名称不得包含任何标点符号,并且不能以a开头 数。 您可以使用单引号代替尖括号;例如,(?'name')。
答案 2 :(得分:-1)
问题是您在命名捕获组名称周围的引号。尝试字符串:(?&lt; Named&gt; asdf)