python检查年份是否在字符串中

时间:2015-11-26 04:19:43

标签: python regex

假设我有一个句子列表,其中许多包含数字(但不是全部):

mylist = [
"The current year is 2015 AD.",
"I have 2 dogs."
...
]

我想知道列表中的哪些元素包含有效年份(例如,1000到3000之间)。我知道这是一个正则表达式问题,我发现了一些帖子(例如,this one)用于检测字符串中的数字,但在全年都没有。那里有任何正则表达式向导吗?

3 个答案:

答案 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)