正则表达式从5开始

时间:2018-09-19 17:55:58

标签: python regex

使用正则表达式函数寻求帮助,该函数查找以5开头且长度为7位数字的字符串。

这是我到目前为止根据搜索得到的内容,但不起作用:

import re

string = "234324, 5604020, 45309, 45, 55, 5102903"
re.findall(r'^5[0-9]\d{5}', string)

不确定我缺少什么。

谢谢

3 个答案:

答案 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|$)

demo

import re

string = "234324, 5604020, 45309, 45, 55, 5102903"
re.findall(r'\b5\d{6}(?:\D|$)', string)