您首先需要格式化字符串,然后使用正则表达式。将所有内容放在一行中确实不值得。通过将花括号加倍来进行转义:
>>> pat= '^(w{{3}}\.)?([0-9A-Za-z-]+\.){{1}}{domainName}$'.format(domainName = 'delivery.com')
>>> pat
'^(w{3}\\.)?([0-9A-Za-z-]+\\.){1}delivery.com$'
>>> re.match(pat, str1)
另外,re.match
在字符串的开头匹配,^
如果使用re.match
,则不必放置,但是,如果需要,^
则需要放置re.search
。
请注意,{1}
在正则表达式中是相当多余的。