我试图在python中使用正则表达式来表示一个4个字符的字符串,第一个字符是一个数字,另外3个字符是数字或大写字母。 以下是与1CTT,2IR8,35TR,4T1R
相匹配的模式示例我尝试了很多方法,这是我尝试的最后一个代码:
exp=re.compile("[0-9]{1}([A-Z0-9]{3})")
感谢您的帮助!
答案 0 :(得分:3)
您最后尝试过的表达式看起来是正确的,应该与提供的测试字符串相匹配。虽然您不必指定{1}
,也不需要捕获组(括号):
>>> import re
>>> text = "text, 1CTT, 2IR8, 35TR, 4T1R, smth else"
>>> pattern = re.compile(r"[0-9][A-Z0-9]{3}")
>>> pattern.findall(text)
['1CTT', '2IR8', '35TR', '4T1R']
您可能需要另外添加字边界约束(感谢@Jon Clements):
>>> text = "text, 1CTT, 2IR8, 35TR, 4T1R, smth else, 35TT35XYZ"
>>> pattern = re.compile(r"\b[0-9][A-Z0-9]{3}\b")
>>> pattern.findall(text)
['1CTT', '2IR8', '35TR', '4T1R']