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字符串对象的实现
Dec 24 Python
python实现读取excel写入mysql的小工具详解
Nov 20 Python
Python自定义函数定义,参数,调用代码解析
Dec 27 Python
python 编码规范整理
May 05 Python
python 用for循环实现1~n求和的实例
Feb 01 Python
PyCharm导入python项目并配置虚拟环境的教程详解
Oct 13 Python
python基于K-means聚类算法的图像分割
Oct 30 Python
python递归调用中的坑:打印有值, 返回却None
Mar 16 Python
python实时监控logstash日志代码
Apr 27 Python
python安装和pycharm环境搭建设置方法
May 27 Python
K近邻法(KNN)相关知识总结以及如何用python实现
Jan 28 Python
解决python的空格和tab混淆而报错的问题
Feb 26 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字符串的比较函数strcmp()与strcasecmp()的使用详解
2013/05/15 PHP
php使用异或实现的加密解密实例
2013/09/04 PHP
thinkPHP5.0框架API优化后的友好性分析
2017/03/17 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
漂亮的仿flash菜单,来自蓝色经典
2006/06/26 Javascript
JavaScript isArray()函数判断对象类型的种种方法
2010/10/11 Javascript
在多个页面使用同一个HTML片段的代码
2011/03/04 Javascript
jQuery1.6 使用方法一
2011/11/23 Javascript
JavaScript中Math对象方法使用概述
2014/01/02 Javascript
判断浏览器的内核及版本号方法汇总
2015/01/05 Javascript
详解JavaScript中的异常处理方法
2015/06/16 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
2016/09/21 Javascript
Centos7 中 Node.js安装简单方法
2016/11/02 Javascript
JavaScript获取服务器端时间的方法
2016/11/29 Javascript
简单实现IONIC购物车功能
2017/01/10 Javascript
js数组与字符串常用方法总结
2017/01/13 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
2017/04/11 Javascript
小程序实现列表删除功能
2018/10/30 Javascript
微信小程序实现底部导航
2018/11/05 Javascript
微信小程序wxs实现吸顶效果
2020/01/08 Javascript
浅谈vue项目,访问路径#号的问题
2020/08/14 Javascript
[04:50]2019DOTA2高校联赛秋季赛四强集锦
2019/12/27 DOTA
Python操作列表的常用方法分享
2014/02/13 Python
简述Python中的进程、线程、协程
2016/03/18 Python
详解用python实现简单的遗传算法
2018/01/02 Python
pytorch + visdom CNN处理自建图片数据集的方法
2018/06/04 Python
python实现linux下抓包并存库功能
2018/07/18 Python
详解Python中的内建函数,可迭代对象,迭代器
2019/04/29 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
2020/06/02 Python
Python类class参数self原理解析
2020/11/19 Python
怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
2013/03/19 面试题
电子商务自荐书范文
2014/01/04 职场文书
大学活动策划书范文
2014/01/10 职场文书
党员群众路线学习心得体会
2014/11/04 职场文书
优秀党支部申报材料
2014/12/24 职场文书
赢在中国观后感
2015/06/02 职场文书