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 uuid模块使用实例
Apr 08 Python
Python中Class类用法实例分析
Nov 12 Python
对numpy Array [: ,] 的取值方法详解
Jul 02 Python
python按时间排序目录下的文件实现方法
Oct 17 Python
python抓取多种类型的页面方法实例
Nov 20 Python
tensorflow指定GPU与动态分配GPU memory设置
Feb 03 Python
ipython jupyter notebook中显示图像和数学公式实例
Apr 15 Python
Python configparser模块应用过程解析
Aug 14 Python
python性能测试工具locust的使用
Dec 28 Python
python 对xml解析的示例
Feb 27 Python
Python爬虫框架之Scrapy中Spider的用法
Jun 28 Python
详细介绍python操作RabbitMq
Apr 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
MySQL授权问题总结
2007/05/06 PHP
使用openssl实现rsa非对称加密算法示例
2014/01/24 PHP
100行PHP代码实现socks5代理服务器
2016/04/28 PHP
php mysql操作mysql_connect连接数据库实例详解
2016/12/26 PHP
PHP递归删除多维数组中的某个值
2017/04/17 PHP
PHP简单计算两个时间差的方法示例
2017/06/20 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
List Installed Hot Fixes
2007/06/12 Javascript
jquery 上下滚动广告
2009/06/17 Javascript
JS实现点击下载的小例子
2013/07/10 Javascript
jquery插件之定时查询待处理任务数量
2014/05/01 Javascript
JavaScript中的关联数组问题
2015/03/04 Javascript
JS建造者模式基本用法实例分析
2015/06/30 Javascript
Vue组件BootPage实现简单的分页功能
2016/09/12 Javascript
Vue.js移动端左滑删除组件的实现代码
2017/09/08 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
2017/10/25 Javascript
angular之ng-template模板加载
2017/11/09 Javascript
Vue2.0+Vux搭建一个完整的移动webApp项目的示例
2019/03/19 Javascript
Vue中jsx不完全应用指南小结
2019/11/01 Javascript
Python 3中的yield from语法详解
2017/01/18 Python
Python函数装饰器原理与用法详解
2019/08/16 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
2020/05/26 Python
最新Python idle下载、安装与使用教程图文详解
2020/11/28 Python
css3实现顶部社会化分享按钮示例
2014/05/06 HTML / CSS
详解css position 5种不同的值的用法
2019/07/30 HTML / CSS
美国经典刺绣和字母儿童服装特卖:Smocked Auctions
2018/07/16 全球购物
阿联酋彩妆品牌:OUD MILANO
2019/10/06 全球购物
通信工程专业女生个人求职信
2013/09/21 职场文书
环境科学专业求职信
2014/08/04 职场文书
单位工作证明格式模板
2014/10/04 职场文书
党员查摆问题及整改措施
2014/10/10 职场文书
会议通知
2015/04/15 职场文书
2015年度高中教师工作总结
2015/05/26 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书
postgreSQL数据库基础知识介绍
2022/04/12 PostgreSQL
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers