我正在尝试编写以不同日期格式(例如3/14/2015
,03-14-2015
和2015/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):
知道为什么这不起作用吗?
答案 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
,这意味着:
忽略模式中
#
之后的空格和文本