重新使用正则表达式命名组,如果它们之前不匹配?

时间:2017-12-29 09:56:16

标签: c# regex

我需要匹配括号内的字符串。它可能包括a)名称,b)正好8位数或c)a + b与'组合:'之间。所以,总结一下:

named
12345678
named:12345678

是有效选项,但不是:

named:
:12345678
named12345678

我试图重复使用' name'和' dd'命名组以避免重复子模式。但是,如果之前没有使用过,那么组似乎无法引用。似乎同样的情况是使用\ 1-like capture accessor。

我目前的解决方案:

"^\\((?:(?'name'[^\\d]+)|((?'dd'\\d{2}){4})|\\k<name>:\\k<dd>)\\)$"

&#39; DD&#39;组被分成两位数的块,因为我需要以这种方式解析它。 使用C#风味。

任何想法如何以优雅,有效的方式编写它?

0 个答案:

没有答案