Python正则表达式找不到匹配项

时间:2015-02-06 11:26:36

标签: python regex

我有以下文件,我试图从20131013.csv

中提取日期

使用正则表达式(?P<yyyy>\\d{4})(?P<mm>\\d{2})(?P<dd>\\d{2})

def getEffectiveDate(regex, fileName) :
    parts = 'yyyy-mm-dd'
    formatString = '%s-%s-%s 00:00:00'
    regexGroups = parts.split("-")
    m = re.search(regex, fileName)
    if m :
        vals = []
        for regexGroup in regexGroups :
            vals.append(m.group(regexGroup))
        value = formatString%tuple(vals)
    return value

当我传入getEffectiveDate('(?P<yyyy>\\d{4})(?P<mm>\\d{2})(?P<dd>\\d{2})', '20131013.csv')时,我找不到任何匹配。

然而,正则表达式(?P<yyyy>\\d{4})-(?P<mm>\\d{2})-(?P<dd>\\d{2})会在2013-10-13.csv

上找到匹配项

我想知道这是否是因为正则表达式组之间没有任何内容以及我能做些什么来解决这个问题?

编辑:

我通过regex.replace('\\\\', '\\')

找到了解决方案

双反斜杠导致匹配问题。我只是尝试使用正则表达式(?P<yyyy>\\d{4})-(?P<mm>\\d{2})-(?P<dd>\\d{2})作为原始字符串,所以它在这种情况下工作。

1 个答案:

答案 0 :(得分:1)

您的代码适合我。最好将正则表达式定义为原始字符串。

>>> re.search(r'(?P<yyyy>\d{4})(?P<mm>\d{2})(?P<dd>\d{2})', '20131013.csv')
<_sre.SRE_Match object; span=(0, 8), match='20131013'>
>>> re.search(r'(?P<yyyy>\d{4})(?P<mm>\d{2})(?P<dd>\d{2})', '20131013.csv').group(1)
'2013'
>>> re.search(r'(?P<yyyy>\d{4})(?P<mm>\d{2})(?P<dd>\d{2})', '20131013.csv').group(2)
'10'
>>> re.search(r'(?P<yyyy>\d{4})(?P<mm>\d{2})(?P<dd>\d{2})', '20131013.csv').group(3)
'13'
相关问题