关于使用正则表达式恰好匹配3个字母后跟3个数字的困惑

时间:2016-04-17 02:35:48

标签: python regex

我是一名Python菜鸟,我正在尝试匹配句子中的单词,这些单词正好是3个字母(小字母或大写字母),后面跟着正好是3个数字。这是我的代码:

def regex():
    pattern = r'^[a-zA-Z]{3}\d{3}$'
    found = re.search(pattern, "My word is bla123")
    print(found)

问题是^。如果我删除它,bla123匹配,但blaa123也是如此。如果我添加^来设置单词绑定,则bla123不匹配。我在这里和其他地方的所有研究都产生了相同的模式,从^开始。一些建议是使用\ b作为前缀和后缀,但这对我来说也不起作用。

请帮忙。我敢肯定有一些我一遍又一遍地忽略的东西。谢谢!

1 个答案:

答案 0 :(得分:5)

您可以删除^$项检查,添加字词边界(\b):

>>> pattern = r'\b[a-zA-Z]{3}\d{3}\b'
>>> re.findall(pattern, "My word is bla123")
['bla123']
>>> re.findall(pattern, "My word345 is bla123")
['bla123']
>>> re.findall(pattern, "My word345 and bla56 is bla123 and abc343")
['bla123', 'abc343']