不可以,当使用标准库
re模块时,正则表达式 模式 不能被“符号化”。
当然,您始终可以通过重新使用Python变量来做到这一点:
digit_letter_letter_digit = r'dwwd'
然后使用字符串格式来构建更大的模式:
match(r"{0},{0}".format(digit_letter_letter_digit), inputtext)或者,使用Python 3.6+ f字符串:
dlld = r'dwwd'match(fr"{dlld},{dlld}", inputtext)我经常使用这种技术从可重复使用的子模式中组成更大,更复杂的模式。
如果您准备安装外部库,则该
regex项目可以通过
regex子例程调用
解决此问题。该语法
(?<digit>)重新使用了已使用(隐式编号)捕获组的模式:
(dwwd),(?1)^........^ ^..^|| re-use pattern of capturing group 1 capturing group 1
你可以做同样的 命名
捕获组,其中
(?<groupname>...)是命名组
groupname,和
(?&groupname),
(?P&groupname)或
(?P>groupname)再使用由匹配模式
groupname(后两种形式是与其他引擎兼容的替代品)。
最后,
regex支持该
(?(DEFINE)...)块以“定义”子例程模式,而无需在该阶段实际匹配任何子例程。你可以把多个
(..)和
(?<name>...)捕获组在结构,以后来指他们在实际的模式:
(?(DEFINE)(?<dlld>dwwd))(?&dlld),(?&dlld) ^...............^ ^......^ ^......^ | /creates 'dlld' pattern uses 'dlld' pattern twice
明确地说:标准库
re模块不支持子例程模式。



