用于更改日期格式的Python正则表达式
我有一个表示日期的字符串数组,如“2015-6-03”,我想将其转换为格式“2015-06-03” 我希望使用正则表达式,而不是使用丑陋的循环进行替换。大致如下:用于更改日期格式的Python正则表达式,python,regex,Python,Regex,我有一个表示日期的字符串数组,如“2015-6-03”,我想将其转换为格式“2015-06-03” 我希望使用正则表达式,而不是使用丑陋的循环进行替换。大致如下: str.replace('(-){1}(\d){1}(-){1}', '-0{my digit here}-') 这样的事情可能吗 是的,正则表达式可以实现您想要的功能 \d+-(\d)-\d+ 因此,要替换它,您可以使用 import re target = "2015-6-05" out = re.sub(r'\d+-(\
str.replace('(-){1}(\d){1}(-){1}', '-0{my digit here}-')
这样的事情可能吗 是的,正则表达式可以实现您想要的功能
\d+-(\d)-\d+
因此,要替换它,您可以使用
import re
target = "2015-6-05"
out = re.sub(r'\d+-(\d)-\d+','(0\\1)', target)
您不必从匹配中检索数字。可以将一位数月份之前的连字符替换为-0 像这样:
re.sub('-(?=\d-)', '-0', text)
请注意?=\d-是一个非捕获表达式,因为左括号后面跟有特殊序列?=。这就是为什么只有连字符被替换
测试:
结果:
'2015-09-03 2015-06-03 2015-01-03 2015-10-03'
类似于
import re
def replaceRegex(what, pattern, filler):
regex = re.compile(pattern)
match = regex.match(what)
if match != None:
from, to = match.span()
return what.replace(what[from : to], filler)
else:
return None
可能会对您有所帮助。不需要正则表达式,您可以将其作为datetime对象加载,并在打印时按要求格式化字符串:
import datetime
s = '2015-6-03'
date_obj = datetime.datetime.strptime(s, '%Y-%m-%d')
print "%d-%02d-%02d" % (date_obj.year, date_obj.month, date_obj.day)
输出
你在找re.sub。查阅文档并试用。谢谢!这正是我需要的谢谢你的解决方案。你是对的,这将适用于我的用例,但我想开始更好地学习regex,所以我相信我最终会使用regex实现。非常感谢
import datetime
s = '2015-6-03'
date_obj = datetime.datetime.strptime(s, '%Y-%m-%d')
print "%d-%02d-%02d" % (date_obj.year, date_obj.month, date_obj.day)
2015-06-03