Python正则表达式展望

2024-04-19 16:35:07 发布

您现在位置:Python中文网/ 问答频道 /正文

试图创建一个正则表达式,找到一些字母组合后跟数字。 像ABC123一样,它可能是ABC123,编号:123你知道吗

reg = re.compile('(ABC(?:ID\:| )?\d*?)(?:$| |,|\t)',re.IGNORECASE)

这是可行的,但是它也发现了ABC本身。。你知道吗

只有在后面跟数字才能找到它吗?你知道吗

提前谢谢


Tags: reid数字reg编号abccompileabc123
2条回答

*?量词与\d一起使用,它匹配0或更多数字(尽可能少)。你知道吗

你可以用

r'ABC(?:ID:| )?\d+'

或者

r'[a-z]+(?:ID:| )?\d+'

参见regex demo

详细信息:

  • ABC-一个ABC子字符串(或[a-z]+来匹配一个或多个ASCII字母(注意,用re.I标志编译模式将使[a-z]也匹配大写ASCII字母)
  • (?:ID:| )?-1或0出现ID:或空格
  • \d+-1+个数字(+是一个贪婪的量词,因此不需要用(?:$| |,|\t)组定义右侧上下文)。你知道吗

请注意,如果您还计划在Python2.x中匹配Unicode字母,则需要使用

re.findall(r'[^\W\d_]+(?:ID:| )?[0-9]+', s, flags=re.U|re.I)

re.U标志将使\W\d类具有Unicode意识。你知道吗

您可以使用:

r"ABC(?:ID)?[ :]?\d+"

enter image description here

Demo

相关问题 更多 >