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中decorator使用实例
Apr 14 Python
详解Python的Django框架中的中间件
Jul 24 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
Jan 05 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
May 25 Python
详谈Pandas中iloc和loc以及ix的区别
Jun 08 Python
Python中实现单例模式的n种方式和原理
Nov 14 Python
python 利用turtle库绘制笑脸和哭脸的例子
Nov 23 Python
Django框架models使用group by详解
Mar 11 Python
Python自定义聚合函数merge与transform区别详解
May 26 Python
详解pandas.DataFrame.plot() 画图函数
Jun 14 Python
python import 上级目录的导入
Nov 03 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
Jan 29 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的栏目导航程序
2006/10/09 PHP
在PHP3中实现SESSION的功能(三)
2006/10/09 PHP
php 来访国内外IP判断代码并实现页面跳转
2009/12/18 PHP
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
2011/09/09 PHP
PHP向socket服务器收发数据的方法
2015/01/24 PHP
php中对象引用和复制实例分析
2019/08/14 PHP
JavaScript继承方式实例
2010/10/29 Javascript
DIY jquery plugin - tabs标签切换实现代码
2010/12/11 Javascript
多个datatable共存造成多个表格的checkbox都被选中
2013/07/11 Javascript
js 获取、清空input type=&quot;file&quot;的值示例代码
2014/02/19 Javascript
自制的文件上传JS控件可支持IE、chrome、firefox etc
2014/04/18 Javascript
javascript的push使用指南
2014/12/05 Javascript
js实现左侧网页tab滑动门效果代码
2015/09/06 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
2016/03/28 Javascript
jquery实现上传文件大小类型的验证例子(推荐)
2016/06/25 Javascript
JavaScript表单焦点自动切换代码
2016/07/24 Javascript
jQuery获取select选中的option的value值实现方法
2016/08/29 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
2017/02/16 Javascript
js实现带三角符的手风琴效果
2017/03/01 Javascript
通过一次报错详细谈谈Point事件
2018/05/17 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
2019/04/24 Javascript
React生命周期原理与用法踩坑笔记
2020/04/28 Javascript
JavaScript 中的执行上下文和执行栈实例讲解
2021/02/25 Javascript
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
2016/06/03 Python
Python实现拷贝多个文件到同一目录的方法
2016/09/19 Python
在django admin详情表单显示中添加自定义控件的实现
2020/03/11 Python
Python任务自动化工具tox使用教程
2020/03/17 Python
python中JWT用户认证的实现
2020/05/18 Python
opencv 图像轮廓的实现示例
2020/07/08 Python
如何以Winsows Service方式运行JupyterLab
2020/08/30 Python
企业年会主持词
2014/03/27 职场文书
经典演讲稿开场白
2014/08/25 职场文书
租车协议书
2015/01/27 职场文书
个人承诺书格式范文
2015/04/29 职场文书
Django与数据库交互的实现
2021/06/03 Python
Python趣味实战之手把手教你实现举牌小人生成器
2021/06/07 Python