查找正则表达式的日期

时间:2016-07-13 13:50:16

标签: python regex

我正在尝试编写以不同日期格式(例如3/14/201503-14-20152015/3/14)清理日期的代码,将其替换为单一标准格式的日期。到目前为止,我已经写了我的正则表达式,但它没有按照我想要的方式工作。

import pyperclip,re

dateRegex = re.compile(r'''
    (\d|\d{2}|\d{4})  # match 1 digit, or two digits, or four digits
    (\s|-|\.|\/) # match either a space or a dash or a period or a backslash
    (\d{2}|\d) # match either 2 digits or one
    (\s|-|\.\/) # match either a space or a dash or a period or a backslash
    (\d{4}|\d{2}) # match either 4 or 2 digits.
    ''',)

text = "12/25/0000, 10.21.1955, 10-21-1985 6-5-1995 2004/2/21 5/25/2111 4999.2.21 "
a = dateRegex.findall(text):

知道为什么这不起作用吗?

1 个答案:

答案 0 :(得分:1)

此代码有效(see live)

import re
p = re.compile(ur'''(\d|\d{2}|\d{4})  # match 1 didget, or two didgets, or four didgets
                    ([-\s./]) # match either a space or a dash or a period or a backslash
                    (\d{1,2}) # match either 2 digets or one
                    ([-\s./]) # match either a space or a dash or a period or a backslash
                    (\d{4}|\d{2}) # match either 4 or 2 didgets.''', re.VERBOSE)
test_str = u"12/25/0000, 10.21.1955, 10-21-1985 6-5-1995 2004/2/21 5/25/2111 4999.2.21 "

print(p.findall(test_str))

您忘记了选项re.VERBOSE,这意味着:

  

忽略模式中#之后的空格和文本