kra*_*r65 5 python regex int match
我正在学习正则表达式,我在这里有点困惑.我有一个字符串,我想从中提取一个至少有4位数字且最多7位数的int.我尝试了如下:
>>> import re
>>> teststring = 'abcd123efg123456'
>>> re.match(r"[0-9]{4,7}$", teststring)
Run Code Online (Sandbox Code Playgroud)
在那里我期待123456,不幸的是,这根本没有任何结果.有人可以帮我一点吗?
And*_*ong 13
@ExplosionPills是正确的,但你的正则表达式仍然存在两个问题.
首先,$匹配结束的字符串.我猜你也希望能够在字符串的中间提取一个int,例如 abcd123456efg789返回123456.要解决这个问题,你需要这个:
r"[0-9]{4,7}(?![0-9])"
^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
增加的部分是一个负面的先行断言,意思是"......后面没有更多的数字." 让我通过使用\d虽然简化:
r"\d{4,7}(?!\d)"
Run Code Online (Sandbox Code Playgroud)
那更好.现在,第二个问题.你的正则表达式的左边没有约束,所以给定一个字符串abcd123efg123456789,你实际上是匹配的3456789.所以,你还需要一个负面的lookbehind断言:
r"(?<!\d)\d{4,7}(?!\d)"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20307 次 |
| 最近记录: |