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展示动态规则法用以解决重叠子问题的示例
Apr 02 Python
Python数据分析之真实IP请求Pandas详解
Nov 18 Python
Python生成随机数组的方法小结
Apr 15 Python
python运行其他程序的实现方法
Jul 14 Python
python3使用requests模块爬取页面内容的实战演练
Sep 25 Python
python批量修改图片大小的方法
Jul 24 Python
celery4+django2定时任务的实现代码
Dec 23 Python
浅谈python requests 的put, post 请求参数的问题
Jan 02 Python
python感知机实现代码
Jan 18 Python
Python时间序列处理之ARIMA模型的使用讲解
Apr 02 Python
Python一键安装全部依赖包的方法
Aug 12 Python
Python爬虫HTPP请求方法有哪些
Jun 03 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分页时出现的Fatal error的解决方法
2011/04/18 PHP
PHP+AJAX实现投票功能的方法
2015/09/28 PHP
php判断是否连接上网络的方法实例详解
2016/12/14 PHP
PHP实现的观察者模式实例
2017/06/21 PHP
javascript学习网址备忘
2007/05/29 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
JQ技术实现注册页面带有校验密码强度
2015/07/27 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
jquery按回车键实现表单提交的简单实例
2016/05/25 Javascript
javascript js 操作数组 增删改查的简单实现
2016/06/20 Javascript
JavaScript 闭包机制详解及实例代码
2016/10/10 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
2016/10/14 Javascript
Bootstrap实现的标签页内容切换显示效果示例
2017/05/25 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
React学习笔记之列表渲染示例详解
2017/08/22 Javascript
详解基于Angular4+ server render(服务端渲染)开发教程
2017/08/28 Javascript
微信小程序支付及退款流程详解
2017/11/30 Javascript
一步步教会你微信小程序的登录鉴权
2018/04/09 Javascript
微信小程序项目实践之主页tab选项实现
2018/07/18 Javascript
Vue插件打包与发布的方法示例
2018/08/20 Javascript
Vue-Quill-Editor富文本编辑器的使用教程
2018/09/21 Javascript
vue.js自定义组件directives的实例代码
2018/11/09 Javascript
angular 用Observable实现异步调用的方法
2018/12/27 Javascript
详解key在Vue列表渲染时究竟起到了什么作用
2019/04/20 Javascript
使用Taro实现小程序商城的购物车功能模块的实例代码
2020/06/05 Javascript
Python实例分享:快速查找出被挂马的文件
2014/06/08 Python
Python 调用PIL库失败的解决方法
2019/01/08 Python
python中with用法讲解
2020/02/07 Python
python编程进阶之类和对象用法实例分析
2020/02/21 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
2020/04/08 Python
Python实现Word表格转成Excel表格的示例代码
2020/04/16 Python
美国波西米亚风格服装品牌:Show Me Your Mumu
2018/01/05 全球购物
mysql的最长数据库名,表名,字段名可以是多长
2014/04/21 面试题
党员干部承诺书范文
2014/03/25 职场文书
转让协议书范本
2014/04/15 职场文书
中国梦演讲稿3分钟
2014/08/19 职场文书