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中实现远程调用(RPC、RMI)简单例子
Apr 28 Python
python多维数组切片方法
Apr 13 Python
python 删除列表里所有空格项的方法总结
Apr 18 Python
Python加载带有注释的Json文件实例
May 23 Python
python中报错&quot;json.decoder.JSONDecodeError: Expecting value:&quot;的解决
Apr 29 Python
Python实现的文轩网爬虫完整示例
May 16 Python
Python可变参数会自动填充前面的默认同名参数实例
Nov 18 Python
基于python中__add__函数的用法
Nov 25 Python
五分钟带你搞懂python 迭代器与生成器
Aug 30 Python
详解pandas映射与数据转换
Jan 22 Python
利用Selenium添加cookie实现自动登录的示例代码(fofa)
May 08 Python
pytorch查看网络参数显存占用量等操作
May 12 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
桌面中心(二)数据库写入
2006/10/09 PHP
利用PHP将部分内容用星号替换
2020/04/21 PHP
Swoole 5将移除自动添加Event::wait()特性详解
2019/07/10 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
2019/09/16 PHP
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
基于JQuery实现鼠标点击文本框显示隐藏提示文本
2012/02/23 Javascript
formvalidator验证插件中有关ajax验证问题
2013/01/04 Javascript
JavaScript中的时间处理小结
2016/02/24 Javascript
浅谈Javascript中的函数、this以及原型
2016/10/09 Javascript
基于Javascript实现文件实时加载进度的方法
2016/10/12 Javascript
利用JS实现简单的瀑布流加载图片效果
2017/04/22 Javascript
Vue实战之vue登录验证的实现代码
2017/10/31 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
2018/05/02 Javascript
微信小程序实现顶部下拉菜单栏
2018/11/04 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
2020/06/11 Javascript
微信小程序实现页面监听自定义组件的触发事件
2020/11/01 Javascript
[53:10]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs VG 第一场
2018/04/11 DOTA
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[54:57]DOTA2-DPC中国联赛定级赛 Aster vs DLG BO3第二场 1月8日
2021/03/11 DOTA
Python简单日志处理类分享
2015/02/14 Python
浅谈python抛出异常、自定义异常, 传递异常
2016/06/20 Python
利用Python开发微信支付的注意事项
2016/08/19 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
Python+Turtle动态绘制一棵树实例分享
2018/01/16 Python
python 使用re.search()筛选后 选取部分结果的方法
2018/11/28 Python
pymongo中group by的操作方法教程
2019/03/22 Python
new_zeros() pytorch版本的转换方式
2020/02/18 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
2021/01/27 Python
CSS3悬停效果案例应用
2012/11/21 HTML / CSS
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
欧洲著名的珠宝和手表网上商城:uhrcenter
2017/04/10 全球购物
庆六一宣传标语
2014/10/08 职场文书
结婚通知短信怎么写
2015/04/17 职场文书
获奖感言范文
2015/07/31 职场文书
2016年综治宣传月活动宣传标语口号
2016/03/16 职场文书
Redis Cluster集群动态扩容的实现
2021/07/15 Redis