尝试创建一个正则表达式,找到一些字母组合后跟数字。 和ABC123一样,它可能是ABC 123,ABCID:123
reg = re.compile('(ABC(?:ID\:| )?\d*?)(?:$| |,|\t)',re.IGNORECASE)
这样可行,但它本身也能找到ABC ..
如果后跟数字,是否只能找到它?
提前致谢
答案 0 :(得分:1)
您使用*?
量词与\d
,并匹配 0 或更多数字(尽可能少)。
您可以使用
r'ABC(?:ID:| )?\d+'
或
r'[a-z]+(?:ID:| )?\d+'
请参阅regex demo
<强>详情:
ABC
- ABC
子字符串(或[a-z]+
以匹配1个或多个ASCII字母(请注意,使用re.I
标记编译模式将启用[a-z]
也可以匹配大写的ASCII字母))(?:ID:| )?
- 1次或0次ID:
或空格\d+
- 1位数(+
是一个贪婪的量词,因此无需使用(?:$| |,|\t)
组定义右手上下文。)请注意,如果您计划在Python 2.x中匹配Unicode字母,则需要使用
re.findall(r'[^\W\d_]+(?:ID:| )?[0-9]+', s, flags=re.U|re.I)
re.U
标志将使\W
和\d
类符合Unicode。
答案 1 :(得分:1)