import re
print(re.findall(r"[tr]\d{6}", 'tr123456'))
为什么提取出的结果带有一个r?
[tr]匹配中括号里面其中一个,你的正则写的是之后就是6个数字,匹配出来的结果就是r123456塞
正则表达式中,方括号[]
用来表示一组并列的字符,比如你问的[tr]
就表示查找字符't'或者字符'r'。
正则表达式r"[tr]\d{6}"
表示匹配字母t或r然后紧紧接着6个数字。所以它会匹配't156543'或'r156423'这样的字符串
如果你这里的方括号是分组的意思,应该使用小括号,正则支持分组功能,在正则表达式中把想要提取的部分用小括号括起来,就可以按照小括号的顺序来找到正则的分组
比如:print(re.findall(r"(tr)(\d{2})(\d{4})", 'tr123456'))
,该正则会匹配字符串中形如'tr123456'这样的部分,并会把tr,前两个数字,后四个数字单独提取出来