我只需要从字符串中查找以18xx
和19xx
开头的出生日期年份
我用正则表达式来解决这个任务
我有测试testbirtdays = 'ABCDEFG 01.19.1701 1801 02.18.1901 2001'
def getNumbers(str):
array = re.findall(r'[0-9]+', str)
return array
我可以使用此功能,但输出将为:
getNumbers(testbirtdays)
#['01', '19', '1701', '1801', '02', '18', '1901', '2001']
我的函数不能做两件事:
我只需要以18
和19
我只需要4x
个数字就可以得到年,而忽略月/日
所以我需要像这样的输出:
#['1801','1901']
您需要一个更具体的正则表达式,如
1[8-9][0-9]{2}
:一个1
,然后是89
中的一个,然后是两个数字您还可以执行
(?:18|19)[0-9]{2}
以18
或19
开头,然后执行其他两位数字你可以用
或者,用词边界:
请参见regex demo #1和regex demo #2
正则表达式详细信息:
(?<![0-9])
-左侧不允许立即使用ASCII数字\b
-单词边界1
-一个1
位[89]
-8
或9
[0-9]{2}
-两个ASCII数字(?![0-9])
-右侧或右侧不允许立即使用ASCII数字\b
-单词边界见Python demo:
这里有一个方法:
输出:
相关问题 更多 >
编程相关推荐