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 相关文章推荐
精确查找PHP WEBSHELL木马的方法(1)
Apr 12 Python
python压缩文件夹内所有文件为zip文件的方法
Jun 20 Python
Python使用plotly绘制数据图表的方法
Jul 18 Python
Python序列化基础知识(json/pickle)
Oct 19 Python
python画双y轴图像的示例代码
Jul 07 Python
python lambda表达式(匿名函数)写法解析
Sep 16 Python
python实现图片插入文字
Nov 26 Python
简单了解Python读取大文件代码实例
Dec 18 Python
django数据模型on_delete, db_constraint的使用详解
Dec 24 Python
python使用gdal对shp读取,新建和更新的实例
Mar 10 Python
Python3 requests模块如何模仿浏览器及代理
Jun 15 Python
python not运算符的实例用法
Jun 30 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&amp;&amp;mysql)三
2006/10/09 PHP
mysql5的sql文件导入到mysql4的方法
2008/10/19 PHP
PHP符合PSR编程规范的实例分享
2016/12/21 PHP
使用jQuery的将桌面应用程序引入浏览器
2010/11/19 Javascript
JQuery+CSS提示框实现思路及代码(纯手工打造)
2013/05/07 Javascript
jquery实现商品拖动选择效果代码(自写)
2013/05/28 Javascript
js的alert弹出框出现乱码解决方案
2013/09/02 Javascript
js创建表单元素并使用submit进行提交
2014/08/14 Javascript
jQuery中closest和parents的区别分析
2015/05/07 Javascript
JS实现弹性菜单效果代码
2015/09/07 Javascript
jQuery插件ImageDrawer.js实现动态绘制图片动画(附源码下载)
2016/02/25 Javascript
jquery编写Tab选项卡滚动导航切换特效
2020/07/17 Javascript
jQuery Masonry瀑布流插件使用方法详解
2017/01/18 Javascript
Bootstrap组合上、下拉框简单实现代码
2017/03/06 Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
element-ui循环显示radio控件信息的方法
2018/08/24 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
关于vue3默认把所有onSomething当作v-on事件绑定的思考
2020/05/15 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
2020/09/21 Javascript
[03:44]2015国际邀请赛选手档案—Cloud9.NoTail
2015/07/28 DOTA
Python自动连接ssh的方法
2015/03/07 Python
python在Windows8下获取本机ip地址的方法
2015/03/14 Python
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
将Django使用的数据库从MySQL迁移到PostgreSQL的教程
2015/04/11 Python
简单介绍使用Python解析并修改XML文档的方法
2015/10/15 Python
python动态网页批量爬取
2016/02/14 Python
python try except返回异常的信息字符串代码实例
2019/08/15 Python
python支持多继承吗
2020/06/19 Python
CSS3实现的闪烁跳跃进度条示例(附源码)
2013/08/19 HTML / CSS
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
Clos19英国:高档香槟、葡萄酒和烈酒在线购物平台
2020/07/10 全球购物
思想政治自我鉴定
2013/10/06 职场文书
教师岗位职责范本
2013/12/29 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
群众路线对照检查材料
2014/09/22 职场文书
2015年建筑工程工作总结
2015/05/13 职场文书