Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将python中的2位数字与字符串匹配?_Python_Regex_Python 3.6 - Fatal编程技术网

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

如何将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}(.*?)$'

我有以下选项,但它们都返回完整的字符串。我需要删除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}(.*?)$', '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啊,我错过了那个。谢谢你敏锐的观察!