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实用代码片段收集贴
Jun 03 Python
Python中将字典转换为XML以及相关的命名空间解析
Oct 15 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
Dec 12 Python
numpy数组之存取文件的实现示例
May 24 Python
Python何时应该使用Lambda函数
Jul 02 Python
Python Django 实现简单注册功能过程详解
Jul 29 Python
基于Python实现视频的人脸融合功能
Jun 12 Python
Python安装并操作redis实现流程详解
Oct 13 Python
python 如何对logging日志封装
Dec 02 Python
python爬虫scrapy框架之增量式爬虫的示例代码
Feb 26 Python
如何使用flask将模型部署为服务
May 13 Python
Django使用channels + websocket打造在线聊天室
May 20 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 获取可变函数参数的函数
2009/08/26 PHP
PHP中的string类型使用说明
2010/07/27 PHP
php操作mysql数据库的基本类代码
2014/02/25 PHP
PHP动态规划解决0-1背包问题实例分析
2015/03/23 PHP
超级简单的jquery操作表格方法
2014/12/15 Javascript
使用堆实现Top K算法(JS实现)
2015/12/25 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
2016/12/28 Javascript
用node开发并发布一个cli工具的方法步骤
2019/01/03 Javascript
vue导航栏部分的动态渲染实例
2019/11/01 Javascript
node解析修改nginx配置文件操作实例分析
2019/11/06 Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
2020/06/15 Javascript
微信小程序实现搜索框功能及踩过的坑
2020/06/19 Javascript
vue抽出组件并传值实例
2020/07/31 Javascript
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
Python字符串处理之count()方法的使用
2015/05/18 Python
Python内置函数 next的具体使用方法
2017/11/24 Python
python如何统计序列中元素
2020/07/31 Python
pycharm执行python时,填写参数的方法
2018/10/29 Python
Python编程图形库之Pillow使用方法讲解
2018/12/28 Python
基于python 微信小程序之获取已存在模板消息列表
2019/08/05 Python
Python pandas库中的isnull()详解
2019/12/26 Python
关于Tensorflow分布式并行策略
2020/02/03 Python
使用Python爬取弹出窗口信息的实例
2020/03/14 Python
利用CSS3实现平移动画效果示例代码
2016/10/12 HTML / CSS
VLAN和VPN有什么区别?分别实现在OSI的第几层?
2014/12/23 面试题
教师找工作推荐信
2013/11/23 职场文书
计算机个人求职信范例
2014/01/24 职场文书
大学生职业生涯规划书汇总
2014/03/20 职场文书
交通文明倡议书
2014/05/16 职场文书
庆六一文艺汇演活动方案
2014/08/26 职场文书
2014教师党员个人自我评议
2014/09/20 职场文书
2014年加油站站长工作总结
2014/12/23 职场文书
小学生暑假生活总结
2015/07/13 职场文书
selenium.webdriver中add_argument方法常用参数表
2021/04/08 Python
python+pyhyper实现识别图片中的车牌号思路详解
2022/12/24 Python