如何在python中将2位数字与字符串匹配?

时间:2018-09-03 19:32:16

标签: python regex python-3.6

我有以下选项,但是所有选项都返回完整字符串。我需要从正则表达式开始删除日期。

d = re.match('^\d{2}.\d{2}.\d{4}(.*?)$', '01.10.2018Any text..')
d = re.match('^[0-9]{2}.[0-9]{2}.[0-9]{4}(.*?)$', '01.10.2018Any text..')

该怎么做? Python 3.6

3 个答案:

答案 0 :(得分:2)

您可以使用sub从字符串^\d{2}\.\d{2}\.\d{4}的开头匹配日期(如模式)(注意,这不会验证日期),并替换为空字符串。

正如@UnbearableLightness所述,如果要从字面上进行匹配,则必须转义点\.

import re
result = re.sub(r'^\d{2}\.\d{2}\.\d{4}', '', '01.10.2018Any text..')
print(result) # Any text..

Demo

答案 1 :(得分:0)

抢第一局比赛

>>> d = re.match('^\d{2}.\d{2}.\d{4}(.*?)$', '01.10.2018Any text..').group(1)
>>> print (d)
'Any text..'

如果不确定是否存在匹配项,则必须先进行检查

>>> s = '01.10.2018Any text..'
>>> match = re.match('^\d{2}.\d{2}.\d{4}(.*?)$', s)
>>> d = match.group(1) if match else s
>>> print(d)
'Any text..'

答案 2 :(得分:0)

使用组来提取日期部分:

d = re.match('^(\d{2}.\d{2}.\d{4})(.*?)$', '01.10.2018Any text..')
if d:
    print(d.group(1))
    print(d.group(2))

第0组是整个字符串,我在日期的正则表达式中添加了一对括号。这是第1组。第2组是紧随其后的文字