正则如何检查长数字的最后四位数
我想用Python检查数字的最后四位数。比如说,如果我有以下这些数字,我想看看最后四位数是否以10或02开头。
- 201600001057(我想得到1057)
- 201600000216(我想得到0216)
提前谢谢你!
5 个回答
0
在 re 模块中,findall
函数可以被用来
>>> import re
>>> x="201600001057"
>>> re.findall('\d{4}$', x)
['1057']
1
你可以使用 re.search 或 re.match。这两个方法会检查字符串,只有当最后四个数字以 10
或 02
开头时,才会匹配成功。
>>> s = "201600001057"
>>> s1 = "201600000216"
>>> re.search(r'(?:10|02)\d{2}$', s)
<_sre.SRE_Match object at 0x7fdbb2b6d3d8>
>>> re.search(r'(?:10|02)\d{2}$', s).group()
'1057'
>>> re.search(r'(?:10|02)\d{2}$', s1).group()
'0216'
>>> if re.search(r'(?:10|02)\d{2}$', s1):
... print 'Matches'
...
Matches
>>> if re.search(r'(?:10|02)\d{2}$', s):
... print 'Matches'
...
Matches
1
(?=(?:10|02))\d{4}$
这样做就可以了。可以看看演示。
http://regex101.com/r/kP4pZ2/18
print re.findall(r"(?=(?:10|02))\d{4}$",x,re.M)
x就是你的字符串。
1
你可以不使用正则表达式来实现这个功能。
>>> s="201600001057"
>>> s[-4:]
"1057"
>>> s[-4:].isdigit()
True
>>> s="201600001057a"
>>> s[-4:].isdigit()
False
3
你为什么要用正则表达式来处理这个呢?
last4 = str(number)[-4:]
if last4.startswith(('10', '02')):
print("yes, actually")