假设我有一个句子列表,其中许多包含数字(但不是全部):
mylist = [
"The current year is 2015 AD.",
"I have 2 dogs."
...
]
我想知道列表中的哪些元素包含有效年份(例如,1000到3000之间)。我知道这是一个正则表达式问题,我发现了一些帖子(例如,this one)用于检测字符串中的数字,但在全年都没有。那里有任何正则表达式向导吗?
答案 0 :(得分:5)
听起来你正在寻找一个能找到4位数字的正则表达式,其中第一个数字介于1和1之间。 3,接下来的3位数介于0和9之间,所以我认为你正在寻找类似的东西
[1-3][0-9]{3}
如果您想接受包含此字符串的字符串,您可以
.*([1-3][0-9]{3})
答案 1 :(得分:4)
这是一个简单的解决方案:
import re
mylist = [] # init the list
for l in mylist:
match = re.match(r'.*([1-3][0-9]{3})', l)
if match is not None:
# Then it found a match!
print match.group(1)
这将检查1000和3999之间是否有4位数字
答案 2 :(得分:3)
一年可以做很多事情。大多数评论它是4位数长,但它只是一个数字。如果您想要从1000年到9999年的所有年份,您可以使用此正则表达式:([1-9][0-9]{3})
,但要匹配您需要的范围:([1-2][0-9]{3}|3000)