Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3中的正则表达式_Python_Regex - Fatal编程技术网

Python3中的正则表达式

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]*

如何在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]*\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