首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >regex从数字5开始

regex从数字5开始
EN

Stack Overflow用户
提问于 2018-09-19 17:55:58
回答 3查看 3.1K关注 0票数 4

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

到目前为止,我的搜索结果是这样的,但不起作用:

代码语言:javascript
运行
复制
import re

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

不知道我错过了什么。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-09-19 17:59:39

您使用的是一个^,它在字符串的开头声明位置。用一个词边界代替。另外,您不需要[0-9]\d

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

代码语言:javascript
运行
复制
>>> re.findall(r'\b5\d{6}\b', s)
['5604020', '5102903']
票数 6
EN

Stack Overflow用户

发布于 2018-09-19 17:58:55

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

代码语言:javascript
运行
复制
import re

string = "234324, 5604020, 45309, 45, 55, 5102903"
re.findall(r'(?<!\d)5\d{6}(?!\d)', string)
票数 3
EN

Stack Overflow用户

发布于 2018-09-19 18:01:20

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

\b5在数字的开头看5

\d{6}匹配6位数字

(?:\D|$)非捕获组:忽略非数字或$

代码语言:javascript
运行
复制
\b5\d{6}(?:\D|$)

演示

代码语言:javascript
运行
复制
import re

string = "234324, 5604020, 45309, 45, 55, 5102903"
re.findall(r'\b5\d{6}(?:\D|$)', string)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52411660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档