如果我有以下字符串'某些数字66666666666666666667867866和序列号151283917503423和8888888'并且我想找到15位数字(因此只有151283917503423)我该怎么做才能使它与更大的数字不匹配并处理可能性字符串可以只是'151283917503423'因此我无法识别它可能在两边都包含空格?
serial = re.compile('[0-9]{15}') serial.findall('some numbers 66666666666666666667867866 and serial 151283917503423 and 8888888')
这将返回66666666666666666667867866和151283917503423,但我只想要后者
使用单词边界:
serial = re.compile(r'\b[0-9]{15}\b')
\ b匹配空字符串,但仅匹配单词的开头或结尾.单词被定义为字母数字或下划线字符的序列,因此单词的结尾由空格或非字母数字的非下划线字符表示.请注意,正式地,\ b被定义为\ w和\ W字符之间的边界(反之亦然),或者在\ w和字符串的开头/结尾之间,因此被认为是字母数字的精确字符集取决于关于UNICODE和LOCALE标志的值.例如,r'\ bfoo\b'匹配'foo','foo.','(foo)','bar foo baz'但不匹配'foobar'或'foo3'.在字符范围内,\ b表示退格符,以便与Python的字符串文字兼容.