正则如何检查长数字的最后四位数

2 投票
5 回答
1962 浏览
提问于 2025-04-29 10:16

我想用Python检查数字的最后四位数。比如说,如果我有以下这些数字,我想看看最后四位数是否以10或02开头。

  1. 201600001057(我想得到1057)
  2. 201600000216(我想得到0216)

提前谢谢你!

暂无标签

5 个回答

0

在 re 模块中,findall 函数可以被用来

>>> import re
>>> x="201600001057"
>>> re.findall('\d{4}$', x)
['1057']
1

你可以使用 re.search 或 re.match。这两个方法会检查字符串,只有当最后四个数字以 1002 开头时,才会匹配成功。

>>> 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")

撰写回答