2024-04-19 16:35:07 发布
网友
试图创建一个正则表达式,找到一些字母组合后跟数字。 像ABC123一样,它可能是ABC123,编号:123你知道吗
reg = re.compile('(ABC(?:ID\:| )?\d*?)(?:$| |,|\t)',re.IGNORECASE)
这是可行的,但是它也发现了ABC本身。。你知道吗
只有在后面跟数字才能找到它吗?你知道吗
提前谢谢
将*?量词与\d一起使用,它匹配0或更多数字(尽可能少)。你知道吗
*?
\d
你可以用
r'ABC(?:ID:| )?\d+'
或者
r'[a-z]+(?:ID:| )?\d+'
参见regex demo
详细信息:
ABC
[a-z]+
re.I
[a-z]
(?:ID:| )?
ID:
\d+
+
(?:$| |,|\t)
请注意,如果您还计划在Python2.x中匹配Unicode字母,则需要使用
re.findall(r'[^\W\d_]+(?:ID:| )?[0-9]+', s, flags=re.U|re.I)
re.U标志将使\W和\d类具有Unicode意识。你知道吗
re.U
\W
您可以使用:
r"ABC(?:ID)?[ :]?\d+"
Demo
将
*?
量词与\d
一起使用,它匹配0或更多数字(尽可能少)。你知道吗你可以用
或者
参见regex demo
详细信息:
ABC
-一个ABC
子字符串(或[a-z]+
来匹配一个或多个ASCII字母(注意,用re.I
标志编译模式将使[a-z]
也匹配大写ASCII字母)(?:ID:| )?
-1或0出现ID:
或空格\d+
-1+个数字(+
是一个贪婪的量词,因此不需要用(?:$| |,|\t)
组定义右侧上下文)。你知道吗请注意,如果您还计划在Python2.x中匹配Unicode字母,则需要使用
re.U
标志将使\W
和\d
类具有Unicode意识。你知道吗您可以使用:
Demo
相关问题 更多 >
编程相关推荐