【发布时间】:2016-02-08 09:46:35
【问题描述】:
这个正则表达式将得到 456。我的问题是为什么它不能是 234 from 1-234-56 ? 56 是否符合 (?!\d)) 模式,因为它不是单个数字。 (?!\d)) 将寻找的起点在哪里?
import re
pattern = re.compile(r'\d{1,3}(?=(\d{3})+(?!\d))')
a = pattern.findall("The number is: 123456") ; print(a)
在第一阶段添加逗号分隔符,如 123,456。
a = pattern.findall("The number is: 123456") ; print(a)
results = pattern.finditer('123456')
for result in results:
print ( result.start(), result.end(), result)
【问题讨论】:
-
如果你告诉你期望正则表达式做什么会有所帮助
-
你是怎么得到
123-456的? -
?!是负前瞻标记,因此如果没有一位数,?!\d将前瞻 -
感谢 SIslam。我只是好奇为什么不能像 1-234-56 那样解析整个数字,因为 ?!\d 只排除 SINGLE 数字,56 不是一个数字。
-
认为你的正则表达式有错误,因为当我运行
import re pattern = re.compile(r'\d{1,3}(?=(\d{3})+(?!\d))') a = pattern.findall("The number is: 123456") print(a)我得到['456']
标签: python regex regex-lookarounds