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的迭代器与生成器实例详解
Jul 16 Python
Python下rrdtool模块的基本使用方法
Nov 13 Python
Python实现字典的遍历与排序功能示例
Dec 23 Python
运行django项目指定IP和端口的方法
May 14 Python
将tensorflow的ckpt模型存储为npy的实例
Jul 09 Python
tensorflow之变量初始化(tf.Variable)使用详解
Feb 06 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
Mar 30 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
Jul 14 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
Dec 01 Python
python 第三方库paramiko的常用方式
Feb 20 Python
Python基础详解之描述符
Apr 28 Python
python通过opencv调用摄像头操作实例分析
Jun 07 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
php网页后退不再出现过期
2007/03/08 PHP
PHP实现用户认证及管理完全源码
2007/03/11 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
2013/06/18 PHP
解析PHP 5.5 新特性
2013/07/02 PHP
php版微信自定义回复功能示例
2016/12/05 PHP
jQuery使用手册之三 CSS操作
2007/03/24 Javascript
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
2011/01/09 Javascript
javascript打印html内容功能的方法示例
2013/11/28 Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
2014/04/03 Javascript
javascript判断是否按回车键并解决浏览器之间的差异
2014/05/13 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
2015/09/23 Javascript
vue组件间通信解析
2017/03/01 Javascript
原生JS中slice()方法和splice()区别
2017/03/06 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
手写Vue2.0 数据劫持的示例
2021/03/04 Vue.js
[05:06]TI4西雅图DOTA2前线报道 海涛密探LGD训练
2014/07/09 DOTA
python 正则式使用心得
2009/05/07 Python
python多线程扫描端口示例
2014/01/16 Python
python实现将汉字转换成汉语拼音的库
2015/05/05 Python
Python变量和数据类型详解
2017/02/15 Python
python编程嵌套函数实例代码
2018/02/11 Python
Python简单实现网页内容抓取功能示例
2018/06/07 Python
Python猜数字算法题详解
2020/03/01 Python
django 前端页面如何实现显示前N条数据
2020/03/16 Python
Python2手动安装更新pip过程实例解析
2020/07/16 Python
HTML5获取当前地理位置并在百度地图上展示的实例
2020/07/10 HTML / CSS
小米旗下精品生活电商平台:小米有品
2018/12/18 全球购物
优秀学生自我鉴定范例
2013/12/18 职场文书
乐观自信演讲稿范文
2014/05/21 职场文书
党员年度个人总结
2015/02/14 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang
Html5生成验证码的示例代码
2021/05/10 Javascript
Oracle 多表查询基本语法实例
2022/04/18 Oracle
使用 MybatisPlus 连接 SqlServer 数据库解决 OFFSET 分页问题
2022/04/22 SQL Server