使用正则表达式函数寻求帮助,该函数查找以5开头且长度为7位数字的字符串。
这是我到目前为止根据搜索得到的内容,但不起作用:
import re
string = "234324, 5604020, 45309, 45, 55, 5102903"
re.findall(r'^5[0-9]\d{5}', string)
不确定我缺少什么。
谢谢
答案 0 :(得分:4)
您正在使用^
,它在字符串的开头声明位置。请改用单词边界。另外,您既不需要[0-9]
也不需要\d
。
改为使用\b5[0-9]{6}\b
(或\b5\d{6}\b
)
>>> re.findall(r'\b5\d{6}\b', s)
['5604020', '5102903']
答案 1 :(得分:3)
正则表达式开头的^
禁止所有不在字符串开头的匹配项。将其替换为\d
后的负数以匹配非数字或开头,并添加负数前瞻以禁止多余的以下数字:
import re
string = "234324, 5604020, 45309, 45, 55, 5102903"
re.findall(r'(?<!\d)5\d{6}(?!\d)', string)
答案 2 :(得分:1)
尝试匹配:边界5
后跟6
个数字,然后在非捕获组中匹配非数字字符。
\b5
在数字开头看起来5
\d{6}
匹配6位数字
(?:\D|$)
非捕获组:忽略非数字或$
\b5\d{6}(?:\D|$)
import re
string = "234324, 5604020, 45309, 45, 55, 5102903"
re.findall(r'\b5\d{6}(?:\D|$)', string)