我需要匹配括号内的字符串。它可能包括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#风味。
任何想法如何以优雅,有效的方式编写它?