我试图将我的头部正确地包裹在下面,但我的推理仍然有很大的漏洞。什么是?::,有人可以为我正确解释
rule_syntax = re.compile('(\\\\*)'\
'(?:(?::([a-zA-Z_][a-zA-Z_0-9]*)?()(?:#(.*?)#)?)'\
'|(?:<([a-zA-Z_][a-zA-Z_0-9]*)?(?::([a-zA-Z_]*)'\
'(?::((?:\\\\.|[^\\\\>]+)+)?)?)?>))')
答案 0 :(得分:4)
您可能希望了解两种工具以帮助您理解
答案 1 :(得分:3)
(?:expr)
与普通括号(expr)
一样,但为了以后检索群组(反向引用,re.sub
或MatchObject.group
),括号内的组以{{开头1}}被排除在外。如果您需要在括号中捕获复杂表达式以将?:
等其他运算符应用于它,但是不希望将它与您实际需要稍后检索的组混合在一起,则此功能非常有用。
*
只是?::
,后跟文字?:
。