寻找应用regex函数的帮助,该正则表达式找到以5开头的字符串,长度为7位。
到目前为止,我的搜索结果是这样的,但不起作用:
import re
string = "234324, 5604020, 45309, 45, 55, 5102903"
re.findall(r'^5[0-9]\d{5}', string)不知道我错过了什么。
谢谢
发布于 2018-09-19 17:59:39
您使用的是一个^,它在字符串的开头声明位置。用一个词边界代替。另外,您不需要[0-9]和\d。
使用\b5[0-9]{6}\b (或\b5\d{6}\b)代替:
>>> re.findall(r'\b5\d{6}\b', s)
['5604020', '5102903']发布于 2018-09-19 17:58:55
正则表达式开头的^禁止任何不是字符串开头的匹配。将其替换为负查找,以使\d匹配非数字或开头,并添加负前瞻以禁止额外的以下数字:
import re
string = "234324, 5604020, 45309, 45, 55, 5102903"
re.findall(r'(?<!\d)5\d{6}(?!\d)', string)发布于 2018-09-19 18:01:20
尝试匹配:边界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)https://stackoverflow.com/questions/52411660
复制相似问题