当前位置: 首页 > news >正文

正则表达式识别日期

正则表达式识别日期

  • 正则表达式识别各种格式的日期

    import redef extract_dates(text):# 正则表达式,用于识别常见的日期格式date_pattern = r"""(?P<date>(?P<year_only>\d{4}(?![\d年]))|                                       # 单独的年份,如 2012,2017(?P<year>\d{4})[-/年.](?P<month>\d{1,2})[-/月.]?(?P<day>\d{1,2})?[日]?|  # YYYY-MM-DD 或 YYYY/MM/DD 或 YYYY.MM.DD 或 YYYY年MM月DD日(?P<day2>\d{1,2})[-/.](?P<month2>\d{1,2})[-/.](?P<year2>\d{4})|        # DD-MM-YYYY 或 DD/MM/YYYY 或 DD.MM.YYYY(?P<month3>\d{1,2})[-/.](?P<day3>\d{1,2})[-/.](?P<year3>\d{2,4})        # MM-DD-YYYY 或 MM/DD/YYYY 或 MM.DD.YYYY)"""# 使用正则表达式查找日期"""re.VERBOSE是一个Python中的re模块的标志,用于在正则表达式中添加注释。使用re.VERBOSE可以让你在写复杂的正则表达式时更方便地组织你的代码,因为它允许你在正则表达式中使用注释,这样可以增强代码的可读性和可维护性。当你使用re.VERBOSE时,你需要在正则表达式中添加注释,注释可以是单行或多行的字符串。在注释中可以写明正则表达式的作用、匹配逻辑等等,以便于其他人理解和修改代码。"""matches = re.finditer(date_pattern, text, re.VERBOSE)result = []# 将匹配的日期添加到结果列表中for match in matches:
    """date_str = match.group('date'):从匹配结果中提取名为date的捕获组,即整个日期字符串。"""date_str = match.group('date')result.append(date_str)return result# 示例
    text = "这个报告是关于2010年3月3日的事件。昨天,即2023/4/10,我们讨论了2012年的计划。2010年3月,我们启动了一个新项目。"
    print(extract_dates(text))
    

    输出结果

    ['2010年3月3日', '2023', '2010年3月']
    
  • 正则表达式解释、程序解释

    这是一个用于从文本中提取日期的Python程序。程序定义了一个正则表达式**date_pattern来匹配常见的日期格式,然后使用re.finditer()**在给定文本中查找匹配的日期。匹配的日期将添加到结果列表中并返回。

    现在,让我们详细解释**date_pattern**正则表达式中的各个部分:

    1. (?P<date>:这是一个命名捕获组,名为**date**。整个正则表达式的目的是匹配一个完整的日期字符串,这个捕获组将包含最终匹配的日期。
    2. (?P<year_only>\d{4}(?![\d年])):这是一个命名捕获组,名为**year_only。它用于捕获仅包含4位数字的年份(例如2012,2017)。(?![\d年])**是一个否定向前查找,表示年份后面不能是数字或“年”。
    3. |:表示或,用于在正则表达式中表示多个备选项之一。
    4. (?P<year>\d{4})[-/年.](?P<month>\d{1,2})[-/月.]?(?P<day>\d{1,2})?[日]?:这是一个命名捕获组,分别名为**yearmonthday**。这个捕获组用于识别格式为 YYYY-MM-DD、YYYY/MM/DD、YYYY.MM.DD 或 YYYY年MM月DD日的日期。
    5. |:再次表示或,用于在正则表达式中表示多个备选项之一。
    6. (?P<day2>\d{1,2})[-/.](?P<month2>\d{1,2})[-/.](?P<year2>\d{4}):这是一个命名捕获组,分别名为**day2month2year2**。这个捕获组用于识别格式为 DD-MM-YYYY、DD/MM/YYYY 或 DD.MM.YYYY 的日期。
    7. |:再次表示或,用于在正则表达式中表示多个备选项之一。
    8. (?P<month3>\d{1,2})[-/.](?P<day3>\d{1,2})[-/.](?P<year3>\d{2,4}):这是一个命名捕获组,分别名为**month3day3year3**。这个捕获组用于识别格式为 MM-DD-YYYY、MM/DD/YYYY 或 MM.DD.YYYY 的日期。
    9. ):这是命名捕获组**date**的结尾括号。
  • re.find相关

    1. re.find
      re.find(pattern, string)函数可以用于在字符串中查找与正则表达式匹配的第一个子串,并返回匹配的对象。如果没有匹配到任何子串,则返回None。该函数只会返回找到的第一个匹配结果。
    2. re.finditer
      re.finditer(pattern, string)函数可以在字符串中查找与正则表达式匹配的所有子串,并返回一个迭代器。迭代器返回的每个元素都是匹配结果的对象。
    3. re.findall
      re.findall(pattern, string)函数可以用于在字符串中查找与正则表达式匹配的所有子串,并将它们以列表的形式返回。与re.finditer()返回的迭代器不同,re.findall()返回的是包含所有匹配结果的列表。如果没有找到匹配的子串,则返回一个空列表。
      总之,re.find()、re.finditer()和re.findall()函数可以帮助我们在一个字符串中查找与正则表达式匹配的子串,并将它们以不同的形式返回。使用这三个函数可以让我们更加方便地处理复杂的字符串。

相关文章:

正则表达式识别日期

正则表达式识别日期 正则表达式识别各种格式的日期 import redef extract_dates(text):# 正则表达式&#xff0c;用于识别常见的日期格式date_pattern r"""(?P<date>(?P<year_only>\d{4}(?![\d年]))| # …...

如何设计一个秒杀架构设计?

文章目录 1. 秒杀业务的特点2. 总体思路2.1 削峰限流安全保护页面优化,动静分离异步处理热点分离2.2 Nginx的设计细节2.3 页面优化细节降低交互的压力安全控制2.4 Redis集群的应用分布式悲观锁(参考redis悲观锁的代码)异步处理订单2.5 消息队列限流2.6 数据库设计2.7 答题验…...

Elasticsearch:配置选项

Elasticsearch 带有大量的设置和配置&#xff0c;甚至可能让专家工程师感到困惑。 尽管它使用约定优于配置范例并且大部分时间使用默认值&#xff0c;但在将应用程序投入生产之前自定义配置是必不可少的。 在这里&#xff0c;我们将介绍属于不同类别的一些属性&#xff0c;并讨…...

消息中间件Kafka分布式数据处理平台+ZooKeeper

目录 一.消息队列基本介绍 1.为什么需要消息队列&#xff08;MQ&#xff09; 2.使用消息队列的好处 2.1 解耦 2.2 可恢复性 2.3 缓冲 2.4 灵活性 & 峰值处理能力 2.5 异步通信 3.消息队列的两种模式 3.1 点对点模式 3.2 发布/订阅模式 二.Kafka基本介绍 1.Kaf…...

Linux 用户文件磁盘网络进程指令

用户相关指令 useradd 用户名添加用户useradd -g 组名 用户名 向组添加用户passwd 用户名 设置密码id 用户名 查看用户名的具体信息cat /etc/passwd 查看创建了哪些用户su 用户名 切换用户名&#xff08;不能获得环境变量&#xff09;su - 用户名获得环境变量以及执行权…...

如何使用Socks5代理IP提高网络安全性

随着网络的快速发展&#xff0c;网络安全问题变得越来越重要。为了保障网络安全&#xff0c;人们普遍使用代理IP&#xff0c;其中Socks5代理IP是一种常用的选择。本文将介绍什么是Socks5代理IP&#xff0c;以及如何使用它提高网络安全性。 一、什么是Socks5代理IP Socks5代…...

《Java8实战》第3章 Lambda 表达式

利用行为参数化来传递代码有助于应对不断变化的需求。它允许你定义一段代码块来表示一个行为&#xff0c;然后传递它。采用匿名类来表示多种行为并不令人满意&#xff1a;代码十分啰唆&#xff0c;这会影响程序员在实践中使用行为参数化的积极性。 3.1 Lambda 管中窥豹 可以…...

开放式耳机的颠覆之作!南卡OE Pro新皇降临!佩戴和音质双重突破

千呼万唤的南卡OE Pro终于要在最近正式官宣上线&#xff0c;此消息一经放出&#xff0c;蓝牙耳机市场就已经沸腾。NANK南卡品牌作为国内的音频大牌&#xff0c;发展和潜力一直备受业内关注&#xff0c;这次要上线的南卡OE Pro更是南卡十余年来积累的声学技术结晶之一。 据透露…...

生成器设计模式(Builder Design Pattern)[论点:概念、图示、示例、框架中的应用、场景]

文章目录概念相关图示代码示例框架中的应用场景多个生成器&#xff08;Concrete Builder&#xff09;&#xff1a;单个生成器概念 生成器设计模式&#xff08;Builder Design Pattern&#xff09;是一种创建型设计模式&#xff0c;用于处理具有多个属性和复杂构造过程的对象。生…...

JUC并发工具

JUC并发工具 一、CountDownLatch应用&源码分析 1.1 CountDownLatch介绍 CountDownLatch就是JUC包下的一个工具,整个工具最核心的功能就是计数器。 如果有三个业务需要并行处理,并且需要知道三个业务全部都处理完毕了。 需要一个并发安全的计数器来操作。 CountDown…...

java面试题-基础问题-如何理解Java中的多态?

如何理解Java中的多态&#xff1f;如何理解Java中的多态&#xff1f;典型回答扩展知识方法的重载与重写重载和重写的区别如何理解Java中的多态&#xff1f; 典型回答 多态的概念比较简单&#xff0c;就是同一操作作用于不同的对象&#xff0c;可以有不同的解释&#xff0c;产…...

03.vue3的计算属性

文章目录1.计算属性1.get()和set()2.computed的简写3.computed和methods对比2.相关demo1.全选和反选2.todos列表1.计算属性 模板内的表达式非常便利&#xff0c;但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护。所以&#xff0c;对于任何…...

Ceph性能调优

1. 最佳实践 1.1 基本 监控节点对于集群的正确运行非常重要&#xff0c;应当为其分配独立的硬件资源。如果跨数据中心部署&#xff0c;监控节点应该分散在不同数据中心或者可用性区域日志可能会让集群的吞吐量减半。理想情况下&#xff0c;应该在不同磁盘上运行操作系统、OSD…...

机器学习-问答题准备(英文)-更新中

第一章 入门 How would you define Machine Learning? Machine Learning is about building systems that can learn from data. Learning means getting better at some task, given some performance measure. Can you name four types of problems where it shines? To r…...

展示演示软件设计制作(C语言)

展示演示软件设计制作 所谓展示演示软件就像是PPT那样的东西。PPT是幻灯片式的展示&#xff0c;而我设计的软件是多媒体的&#xff0c;多样展示方法的&#xff0c;多种功能的。可以扩展为产品展示&#xff0c;项目介绍&#xff0c;景点导游&#xff0c;多媒体授课&#xff0c;…...

Android 自定义view 入门 案例

自定义一个圆环进度条&#xff1a; 1.首页Android Studio创建一个项目 2.在项目src/xxx/目录下右键选择创建一个自定义view页面&#xff1a;new->UICompoent->customer view 3.输入自定义名称&#xff0c;选择开发语言 4.确定之后&#xff0c;自动生成3个文件一个是&…...

[imangazaliev/didom]一个简单又快速的DOM操作库

DiDOM是一个功能齐全、易于使用和高性能的解析器和操作库&#xff0c;可以帮助PHP开发者更加高效地处理HTML文档。 为了更好地了解这个项目&#xff0c;我们先来看看下面的介绍。 安装 你可以使用composer来安装DiDOM&#xff0c;只需要在你的项目目录下执行下面的命令&…...

Cookie和Session的工作流程及区别(附代码案例)

目录 一、 HTTP协议 1.1 为什么HTTP协议是无状态的&#xff1f; 1.2 在HTTP协议中流式传输和分块传输编码的区别 二、Cookie和Session 2.1 Cookie 2.2 Session 2.3 Cookie和Session的区别 三、servlet中与Cookie和Session相关的API 3.1 HttpServletRequest 类中的相关方…...

适用于高级别自动驾驶的驾驶员可预见误用仿真测试

摘要 借助高级别自动驾驶(HAD)&#xff0c;驾驶员可以从事与驾驶无关的任务。在系统出现失效的情况下&#xff0c;驾驶员应该合理地重新获得对自动驾驶车辆(AV)的控制。不正确的系统理解可能会引起驾驶员的误操作&#xff0c;并可能导致车辆级的危害。ISO 21448预期功能安全标…...

Linux之进程知识点

一、什么是进程 进程是一个运行起来的程序。 问题思考&#xff1a; ❓ 思考&#xff1a;程序是文件吗&#xff1f; 是&#xff01;都读到这一章了&#xff0c;这种问题都无需思考&#xff01;文件在磁盘哈。 本章一开始讲的冯诺依曼&#xff0c;磁盘就是外设&#xff0c;和内…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...