Python 以数字5开头的正则表达式

Python 以数字5开头的正则表达式,python,regex,Python,Regex,正在寻找应用正则表达式函数的帮助,该函数查找以5开头、7位数长的字符串 这是我迄今为止根据搜索结果得出的结果,但不起作用: import re string = "234324, 5604020, 45309, 45, 55, 5102903" re.findall(r'^5[0-9]\d{5}', string) 不知道我错过了什么 谢谢正则表达式开头的^禁止任何不在字符串开头的匹配。将其替换为\d的负向后查找以匹配非数字或开头,并添加负向前查找以禁止额外的以下数字: import re

正在寻找应用正则表达式函数的帮助,该函数查找以5开头、7位数长的字符串

这是我迄今为止根据搜索结果得出的结果,但不起作用:

import re

string = "234324, 5604020, 45309, 45, 55, 5102903"
re.findall(r'^5[0-9]\d{5}', string)
不知道我错过了什么


谢谢

正则表达式开头的
^
禁止任何不在字符串开头的匹配。将其替换为
\d
的负向后查找以匹配非数字或开头,并添加负向前查找以禁止额外的以下数字:

import re

string = "234324, 5604020, 45309, 45, 55, 5102903"
re.findall(r'(?<!\d)5\d{6}(?!\d)', string)
重新导入
string=“23432456040204530454545555102903”

关于findall(r’(?您使用的是一个
^
,它在字符串的开头声明位置。请改用单词边界。此外,您不需要
[0-9]
\d

使用
\b5[0-9]{6}\b
(或
\b5\d{6}\b
)代替:


尝试匹配:边界
5
后跟
6
数字,然后匹配非捕获组中的非数字字符

\b5
在数字的开头看
5

\d{6}
匹配6位数字
(?:\D |$)
非捕获组:忽略非数字或
$

\b5\d{6}(?:\D|$)


您仅从字符串开始匹配,请删除
^
,并希望在5位之后匹配6位数字,而不是5位数字。您可能还希望使用单词边界。请使用或类似网站检查/验证/测试您的正则表达式。可能重复的“否”,这也将匹配
45123456
。请使用一些边界。同时,在匹配
5\d{6}
这意味着
7个
数字您不必在前瞻中重复它。您可以安全地删除前瞻。这不会匹配字符串开头的有效匹配项。请使用
s='5123456'
\D
匹配任何非数字的字符,但开头不是字符匹配项,并且
\D
不检查零长度匹配您是对的。我将其更改为负lookback/ahead如果您有
s=67.5678903
@onyanbu,则仍然会遗漏一个单词边界与
67.5678903
中遇到
5
的位置匹配。如果op想将句点视为数字边界,则该边界不明确(如果它们被视为分隔符)或如果它们作为小数点包含在数字中。
\b5\d{6}(?:\D|$)
import re

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