Python正则表达式匹配日期与时间的方法


Posted in Python onJuly 07, 2019

下面给大家介绍下Python正则表达式匹配日期与时间

#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'Randy'
import re
from datetime import datetime
test_date = '他的生日是2016-12-12 14:34,是个可爱的小宝贝.二宝的生日是2016-12-21 11:34,好可爱的.'
test_datetime = '他的生日是2016-12-12 14:34,是个可爱的小宝贝.二宝的生日是2016-12-21 11:34,好可爱的.'
# date
mat = re.search(r"(\d{4}-\d{1,2}-\d{1,2})",test_date)
print mat.groups()
# ('2016-12-12',)
print mat.group(0)
# 2016-12-12
date_all = re.findall(r"(\d{4}-\d{1,2}-\d{1,2})",test_date)
for item in date_all:
  print item
# 2016-12-12
# 2016-12-21
# datetime
mat = re.search(r"(\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2})",test_datetime)
print mat.groups()
# ('2016-12-12 14:34',)
print mat.group(0)
# 2016-12-12 14:34
date_all = re.findall(r"(\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2})",test_datetime)
for item in date_all:
  print item
# 2016-12-12 14:34
# 2016-12-21 11:34
## 有效时间
# 如这样的日期2016-12-35也可以匹配到.测试如下.
test_err_date = '如这样的日期2016-12-35也可以匹配到.测试如下.'
print re.search(r"(\d{4}-\d{1,2}-\d{1,2})",test_err_date).group(0)
# 2016-12-35
# 可以加个判断
def validate(date_text):
  try:
    if date_text != datetime.strptime(date_text, "%Y-%m-%d").strftime('%Y-%m-%d'):
      raise ValueError
    return True
  except ValueError:
    # raise ValueError("错误是日期格式或日期,格式是年-月-日")
    return False
print validate(re.search(r"(\d{4}-\d{1,2}-\d{1,2})",test_err_date).group(0))
# false
# 其他格式匹配. 如2016-12-24与2016/12/24的日期格式.
date_reg_exp = re.compile('\d{4}[-/]\d{2}[-/]\d{2}')
test_str= """
   平安夜圣诞节2016-12-24的日子与去年2015/12/24的是有不同哦.
   """
# 根据正则查找所有日期并返回
matches_list=date_reg_exp.findall(test_str)
# 列出并打印匹配的日期
for match in matches_list:
 print match
# 2016-12-24
# 2015/12/24

 https://www.pythonxyz.com/10025-python-regex-match-date-time.xyz

 ps:下面看下python正则表达式中原生字符r的作用

 r的作用

>>> mm = "c:\\a\\b\\c"
>>> mm
'c:\\a\\b\\c'
>>> print(mm)
c:\a\b\c
>>> re.match("c:\\\\",mm).group()
'c:\\'
>>> ret = re.match("c:\\\\",mm).group()
>>> print(ret)
c:\
>>> ret = re.match("c:\\\\a",mm).group()
>>> print(ret)
c:\a
>>> ret = re.match(r"c:\\a",mm).group()
>>> print(ret)
c:\a
>>> ret = re.match(r"c:\a",mm).group()
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
>>>

说明

Python中字符串前面加上 r 表示原生字符串

与大多数编程语言相同,正则表达式里使用"\"作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符"\",那么使用编程语言表示的正则表达式里将需要4个反斜杠"\\":前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。

Python里的原生字符串很好地解决了这个问题,有了原生字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。

>>> ret = re.match(r"c:\\a",mm).group()
>>> print(ret)
c:\a

总结

以上所述是小编给大家介绍的Python正则表达式匹配日期与时间的方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Python 相关文章推荐
python base64 decode incorrect padding错误解决方法
Jan 08 Python
从Python程序中访问Java类的简单示例
Apr 20 Python
Python中DJANGO简单测试实例
May 11 Python
在Django中进行用户注册和邮箱验证的方法
May 09 Python
怎么使用pipenv管理你的python项目
Mar 12 Python
python调用c++传递数组的实例
Feb 13 Python
python实现人工智能Ai抠图功能
Sep 05 Python
Django使用Profile扩展User模块方式
May 14 Python
Python flask框架如何显示图像到web页面
Jun 03 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
Jun 23 Python
python上下文管理的使用场景实例讲解
Mar 03 Python
Python  序列化反序列化和异常处理的问题小结
Dec 24 Python
python pickle存储、读取大数据量列表、字典数据的方法
Jul 07 #Python
python保存字典和读取字典的实例代码
Jul 07 #Python
python 实现创建文件夹和创建日志文件的方法
Jul 07 #Python
python 画二维、三维点之间的线段实现方法
Jul 07 #Python
Python调用百度根据经纬度查询地址的示例代码
Jul 07 #Python
选择Python写网络爬虫的优势和理由
Jul 07 #Python
python和c语言的主要区别总结
Jul 07 #Python
You might like
PHP ajax 分页类代码
2008/11/13 PHP
PHP获取ip对应地区和使用网络类型的方法
2015/03/11 PHP
php微信开发之图片回复功能
2018/06/14 PHP
解决php扩展安装不生效问题
2019/10/25 PHP
纯js实现背景图片切换效果代码
2010/11/14 Javascript
Js中获取frames中的元素示例代码
2013/07/30 Javascript
讨论html与javascript在浏览器中的加载顺序问题
2013/11/27 Javascript
浅谈js中的闭包
2015/03/16 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
详解vue-Resource(与后端数据交互)
2017/01/16 Javascript
Vue.js展示AJAX数据简单示例讲解
2017/03/29 Javascript
详解vue模拟加载更多功能(数据追加)
2017/06/23 Javascript
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
2018/11/29 Javascript
小程序红包雨的实现示例
2019/02/19 Javascript
node 标准输入流和输出流代码实例
2019/09/19 Javascript
[03:43]TI9战队采访——PSG.LGD
2019/08/22 DOTA
python使用post提交数据到远程url的方法
2015/04/29 Python
Python判断某个用户对某个文件的权限
2016/10/13 Python
python实现京东秒杀功能
2018/07/30 Python
ERLANG和PYTHON互通实现过程详解
2019/07/05 Python
解决django 新增加用户信息出现错误的问题
2019/07/28 Python
基于Python的图像数据增强Data Augmentation解析
2019/08/13 Python
Python3.7安装keras和TensorFlow的教程图解
2020/06/18 Python
Python超越函数积分运算以及绘图实现代码
2019/11/20 Python
Python 实现日志同时输出到屏幕和文件
2020/02/19 Python
Java面试题:请说出如下代码的输出结果
2013/04/22 面试题
研究生自我鉴定范文
2013/10/30 职场文书
工业学校毕业生自荐信范文
2014/01/03 职场文书
幼儿园中班上学期评语
2014/04/18 职场文书
电钳工人个人求职信
2014/05/10 职场文书
年终考核实施方案
2014/05/26 职场文书
爱的奉献演讲稿
2014/09/10 职场文书
酒店办公室主任岗位职责
2015/04/01 职场文书
2015重阳节敬老活动总结
2015/07/29 职场文书
关于flex 上下文中自动 margin的问题(完整例子)
2021/05/20 HTML / CSS