如何将python中的2位数字与字符串匹配?
我有以下选项,但它们都返回完整的字符串。我需要删除regex开头的日期如何将python中的2位数字与字符串匹配?,python,regex,python-3.6,Python,Regex,Python 3.6,我有以下选项,但它们都返回完整的字符串。我需要删除regex开头的日期 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..') 怎么做?Python3.6赢得比赛的第一组 >>> d = re.match('^\d{2}.\d{2}.\d{4}(.*?)$'
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..')
怎么做?Python3.6赢得比赛的第一组
>>> 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..'
使用组提取日期部分:
d = re.match('^(\d{2}.\d{2}.\d{4})(.*?)$', '01.10.2018Any text..')
if d:
print(d.group(1))
print(d.group(2))
组0是整个字符串,我在regex中添加了一对日期前后的括号。这是第一组。第2组是文本,之后是您要查找的内容您可以使用它从字符串^\d{2}\.\d{2}\.\d{4}
开始匹配类似日期的模式(注意,这不会验证日期),并替换为空字符串
正如@UnderrableLightness所提到的,如果你想从字面上匹配它,你就必须避开这个点
import re
result = re.sub(r'^\d{2}\.\d{2}\.\d{4}', '', '01.10.2018Any text..')
print(result) # Any text..
如果没有匹配项。。。它不会返回错误吗?是的<代码>属性错误:“非类型”对象没有属性“组”,所以问题是我应该使用
group(1)
而不是d[3]
?这很奇怪为什么我不能使用数组来打印结果。这也适用于99.10.2018任何文本..
这是一个无效的日期…这里
匹配任何字符都有效,然而,出于教育目的,最好将圆点转义,以表明元字符需要转义。这也适用于99.10.2018任何文本..
,它是无效的日期…这就是为什么我在我的答案中添加了(注意,这并不验证日期)
。在这里,匹配任何字符的
都有效,然而,出于教育目的,最好避开圆点,以表明元字符需要避开。@UnerableLightness啊,我错过了那个。谢谢你敏锐的观察!