Python3中的正则表达式
如何在Python中搜索模式为“2018年4月12日”的字符串,并将其转换为Python中的日期对象。如果其格式类似于“2018年4月12日”,则最好使用。但是,如果被其他页面内容包围,则可能需要使用正则表达式Python3中的正则表达式,python,regex,Python,Regex,如何在Python中搜索模式为“2018年4月12日”的字符串,并将其转换为Python中的日期对象。如果其格式类似于“2018年4月12日”,则最好使用。但是,如果被其他页面内容包围,则可能需要使用正则表达式 datetime.datetime.strptime("12 Apr 2018", "%d %b %Y") 这将返回一个datetime对象,如下所示 datetime.datetime(2018, 4, 12, 0, 0) 你可以用 \b[1-3][0-9]\s+[a-zA-Z]*
datetime.datetime.strptime("12 Apr 2018", "%d %b %Y")
这将返回一个datetime对象,如下所示
datetime.datetime(2018, 4, 12, 0, 0)
你可以用
\b[1-3][0-9]\s+[a-zA-Z]*\s+[1-9][0-9]{3}\b
它是基于你的正则表达式,稍作改动。我已将行首/行尾标记(^$
)替换为单词边界\b
。我在日期部分之间添加了空格(\s+
),并且允许在日期和年份中为零
当你有了它,你可以像Sam Collins建议的那样使用strTime。假设日期总是以(数字日)(3个字母缩写的月份)(4个数字年份)的格式,你想要的正则表达式是
[0-9]{1,2}(?任意一个数字或任意两个连续数字)[a-zA-Z]{3}(?3个字母)[0-9]{4}(?4个数字)
注释((?#…)
位)显然可以省略
我还建议使用编译正则表达式对象的findall
(或finditer
),而不是search
,函数
要将结果转换为Python日期对象,我建议Sam回答-time.strtime(结果,“%d%b%Y”)
-其中“result
”存储匹配的str
或者,对于正则表达式,如果您希望它更加具体(尽管它可能仍然捕获无效日期,如2月30日),您可以使用
([0-2][0-9]|3[01])(一月|二月|三月|四月|五月|六月|七月|八月|九月|十月|十一月|十二月)(如果您愿意的话,可以使这一点不区分大小写)[0-9]{4}
?你是在寻找这个特定的日期还是这种格式的任何日期?所以,我有一个网站上的html片段。我需要从这个格式的字符串中提取日期。我尝试重新搜索,但该模式没有返回任何结果。打印(重新搜索(r'^[1-3]*[1-9]*\b[a-zA-Z]*\b[1-9]{4},stru mydivs)”尝试:\b[1-3][1-9]\s+[a-zA-Z]*\s+[0-9]{4}\b