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 k-近邻算法实例分享
Jun 11 Python
python运行时间的几种方法
Jun 17 Python
python如何读写json数据
Mar 21 Python
PyQt5实现类似别踩白块游戏
Jan 24 Python
Laravel+Dingo/Api 自定义响应的实现
Feb 17 Python
python面向对象法实现图书管理系统
Apr 19 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
Jun 21 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
Sep 25 Python
TensorFlow设置日志级别的几种方式小结
Feb 04 Python
在django中使用apscheduler 执行计划任务的实现方法
Feb 11 Python
Python 读取有公式cell的结果内容实例方法
Feb 17 Python
python如何导出微信公众号文章方法详解
Aug 31 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
echo(),print(),print_r()之间的区别?
2006/11/19 PHP
解决cPanel无法安装php5.2.17
2014/06/22 PHP
php中spl_autoload详解
2014/10/17 PHP
Smarty最简单实现列表奇偶变色的方法
2015/07/01 PHP
PHP通过串口实现发送短信
2015/07/08 PHP
PHP实现递归的三种方法
2020/07/04 PHP
HTTP头隐藏PHP版本号实现过程解析
2020/12/09 PHP
Javascript 事件流和事件绑定
2009/07/16 Javascript
Ajax提交与传统表单提交的区别说明
2014/02/07 Javascript
JavaScript调试技巧之console.log()详解
2014/03/19 Javascript
js控制href内容的连接内容的变化示例
2014/04/30 Javascript
Javascript实现单张图片浏览
2014/12/18 Javascript
js对象的复制继承实例
2015/01/10 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
2016/06/02 Javascript
轻松掌握JavaScript策略模式
2016/08/25 Javascript
js实现图片左右滚动效果
2017/02/27 Javascript
Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程
2017/05/07 Javascript
详解开源的JavaScript插件化框架MinimaJS
2017/10/26 Javascript
基于Vue的延迟加载插件vue-view-lazy
2018/05/21 Javascript
React中使用async validator进行表单验证的实例代码
2018/08/17 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
2020/03/17 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
2020/08/14 Javascript
vue 子组件和父组件传值的示例
2020/09/11 Javascript
[00:35]可解锁地面特效
2018/12/20 DOTA
pandas 数据归一化以及行删除例程的方法
2018/11/10 Python
Django如何实现密码错误报错提醒
2020/09/04 Python
露营世界:Camping World
2017/02/02 全球购物
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2016/02/09 面试题
出纳岗位职责模板
2013/11/27 职场文书
演讲稿的写法
2014/05/19 职场文书
学习十八大标语
2014/10/09 职场文书
医院科室评语
2015/01/04 职场文书
自我检讨报告
2015/01/28 职场文书
spring cloud eureka 服务启动失败的原因分析及解决方法
2022/03/17 Java/Android