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 相关文章推荐
以一段代码为实例快速入门Python2.7
Mar 31 Python
对于Python的Django框架部署的一些建议
Apr 09 Python
Python黑魔法@property装饰器的使用技巧解析
Jun 16 Python
python数据结构链表之单向链表(实例讲解)
Jul 25 Python
机器学习python实战之手写数字识别
Nov 01 Python
Django自定义manage命令实例代码
Feb 11 Python
一些Centos Python 生产环境的部署命令(推荐)
May 07 Python
Python字符串的全排列算法实例详解
Jan 07 Python
selenium python 实现基本自动化测试的示例代码
Feb 25 Python
如何将json数据转换为python数据
Sep 04 Python
python能做哪些生活有趣的事情
Sep 09 Python
python关于倒排列的知识点总结
Oct 13 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多个文件及图片上传实例详解
2014/11/10 PHP
微信API接口大全
2015/04/15 PHP
关于Javascript模块化和命名空间管理的问题说明
2010/12/06 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
JavaScript弹出对话框的三种方式
2016/03/23 Javascript
jQuery插件uploadify实现ajax效果的图片上传
2016/06/18 Javascript
Bootstrap CSS布局之代码
2016/12/17 Javascript
深入理解JavaScript中的预解析
2017/01/04 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
2017/01/16 Javascript
Vue.js仿微信聊天窗口展示组件功能
2017/08/11 Javascript
JavaScript 中Date对象的格式化代码方法汇总
2017/09/06 Javascript
Js中async/await的执行顺序详解
2017/09/22 Javascript
浅谈es6 javascript的map数据结构
2017/12/14 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
2020/01/14 Javascript
Python实现批量把SVG格式转成png、pdf格式的代码分享
2014/08/21 Python
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
Python操作使用MySQL数据库的实例代码
2017/05/25 Python
详解Python中的分组函数groupby和itertools)
2018/07/11 Python
基于python实现学生管理系统
2018/10/17 Python
Python类的继承用法示例
2019/01/31 Python
Python closure闭包解释及其注意点详解
2019/08/28 Python
python实现发送form-data数据的方法详解
2019/09/27 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
2019/11/15 Python
python使用rsa非对称加密过程解析
2019/12/28 Python
python如何更新包
2020/06/11 Python
python3列表删除大量重复元素remove()方法的问题详解
2021/01/04 Python
英国著名音像制品和图书游戏购物网站:Zavvi
2016/08/04 全球购物
挪威太阳镜和眼镜网上商城:SmartBuyGlasses挪威
2016/08/20 全球购物
物业管理大学生个人的自我评价
2013/10/10 职场文书
房地产推广策划方案
2014/05/19 职场文书
2014年小学教学工作总结
2014/11/13 职场文书
现场施工员岗位职责
2015/04/11 职场文书
2015年审计人员工作总结
2015/05/26 职场文书
2016全国“质量月”活动标语口号
2015/12/26 职场文书
利用 Python 的 Pandas和 NumPy 库来清理数据
2022/04/13 Python