如何修改此正则表达式以获取测试字符串中的所有日期

2023-11-30

test_string = '''dated as of October 17, 2012 when we went caroling, dated as of December 21, 2011 when we ate bananas'''


import re
import calendar

months_full = '|'.join([month for month in calendar.month_name][1:])

pattern_1 = r'\b' + months_full + r'\s+\d{1,2},?\s+\d{4},?'
test_pattern = re.compile(pattern_1)
x = test_pattern.findall(test_string)

print x

>>> 
['October', 'December 21, 2011']
>>> 

我认为我的正则表达式在问

从单词边界开始

查找任意月份(拼写正确且大写字母正确)

接下来要求有一个或多个空格

后跟 1 或 2 位数字

接下来可能有一个或零个逗号

后跟一个或多个空格

那么应该有4位数字

它可能以紧邻最后一个数字的逗号结尾

一旦我得到日期,我打算验证它们,这样我就不会太担心这个案子

2999 年 1 月 1 日朗姆酒箱,我可以检查该日期是否在有效范围内。

我确实发现,当我用十二月替换第一个月时,正则表达式会返回两个日期。我玩过 \b 。和其他变化,但似乎无法克服这一点。

任何意见将不胜感激


您的模式不起作用,因为您忘记将月份名称的交替放在非捕获组中(?:...)

另一条通知:

当您可以编写它们并优化您的模式时,加载一个只有英文月份名称的模块是一种耻辱!例子:

pattern_1 = r'\b(?:(?:jan|febr)uary|ma(?:y|rch)|ju(?:ne|ly)|a(?:pril|ugust)|(?:octo|(?:sept|nov|dec)em)ber)\s+[0-9]{1,2},?\s+[0-9]{4},?'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何修改此正则表达式以获取测试字符串中的所有日期 的相关文章

随机推荐

  • 如何优雅地检测 SSL

    我有一个 Web 服务 可以绑定到 ssl 或普通 http Java 客户端配置为了解服务器主机和端口 当客户端连接时 我构建服务器端点 例如http 主机 端口 服务 客户端不知道服务器是否使用 ssl 服务器始终绑定到单个端口 因此它
  • 自定义 EditorTemplate 未在 MVC4 中用于 DataType.Date

    我正在使用以下命令将 MVC3 应用程序升级到 MVC4来自微软的说明 一切都进行得相当顺利 除了我的一些日期模型属性现在呈现不同 例如 这些属性之一在视图模型中定义如下 Required ErrorMessage Required Dat
  • 当上游存在更改时,为什么 git status 显示分支是最新的?

    更改存在于跟踪分支的上游 但是当我输入时git status它表明我的本地分支机构是最新的 这是新行为吗 我是否更改了配置设置 或者出了什么问题 ubuntu host my repo git status On branch master
  • 占位符中的不同颜色[重复]

    这个问题在这里已经有答案了 我有一个带有占位符的输入字段 如下所示
  • OpenOffice Base 中的 sql 方言

    我熟悉 SQLite 和 MySQL 中的 SQL 但 OpenOffice Base 似乎要么非常瘫痪 要么我不明白如何执行原始 SQL 我想 有效地 这样做 INSERT INTO t2 SELECT NULL as id t foo
  • 如何确保编译时枚举开关的完整性?

    我有几个 switch 语句来测试enum All enum值必须在switch的陈述case陈述 在代码重构期间 可能会发生以下情况 enum收缩和增长 当 的时候enum收缩编译器会抛出错误 但如果enum成长 匹配状态被遗忘并产生运行
  • 在共享主机上显示 Laravel 存储的图像

    我已经在实时服务器上成功部署了我的第一个 Laravel 应用程序 一切看起来都很棒 除了我无法显示正在上传到的图像 myproject src storage app public myfolder1 folder 这是我在 HostGa
  • 如何将命令的输出插入批处理文件中的变量?

    在 Windows 上的批处理文件中 我想要一些变量具有以下输出dir b命令 如何实现这一目标 批处理文件不能很好地处理这个用例 我确实找到了一个描述使用临时文件的技术的线程
  • 规范与非规范终端输入

    我正在准备考试 我对 Unix 中规范与非规范输入 输出的工作方式感到困惑 例如 curses 我知道有一个缓冲区可以应用 行规则 来进行规范输入 这是否意味着非规范输入会绕过缓冲区 或者只是意味着不应用任何线路规则 此过程对于输入和输出操
  • 如何将文本转换为\x代码?

    我想将普通文本转换为 x 代码 例如 x14 x65 x60 例如 normal text base64 decode converted x codes for above text x62 141 x73 145 x36 64 x5f
  • Python用strptime解析日期

    我有以这种格式返回日期的网址 url date 2015 01 12T08 43 02Z 我不知道为什么会有字符串 将其获取为更简单 2015 01 1208 43 02 使用它来解析会更简单 datetime datetime strpt
  • 根据数组数量显示 div

    这是我的功能 function yyy hero image option callback hero options get option hero options count count hero options totalimg co
  • 在 C# DllImport 中使用 32 位或 64 位 dll

    情况如下 我在 dot net 应用程序中使用基于 C 的 dll 有 2 个 dll 一个是 32 位版本 称为 MyDll32 dll 另一个是 64 位版本 称为 MyDll64 dll 有一个静态变量保存 DLL 文件名 字符串 D
  • 如何在回收站视图android中选择多个项目?

    我想在回收器视图中选择多个项目 当选择它时 我想将该项目的复选框的可见性设置为可见 所以 只要我能够设置onlongClickListner使用接口和处理onLongClick片段中的事件 每当用户长按任何项目时 应用程序onCLick逻辑
  • 如何从 UIActivityItemSource 函数返回多个值

    是否可以从 UIActivityItemSource 函数返回多个值 并将它们传递给 UIActivityViewController 的 ActivityItems 我想返回 message image url 数组并传递给 Activi
  • 从 .NET 应用程序使用 OTRS TicketConnector

    我想消费OTRS 票务连接器 NET 应用程序中的 Web 服务 通常 连接到 Web 服务的最简单方法是通过 添加服务引用 导入其 WSDL 不幸的是 OTRS TicketConnector 不发布 WSDL 我找到了 TicketCo
  • 错误:[Errno 32] 当 paypal 回调 python django 应用程序时管道损坏

    您好 我正在与我的 django 应用程序进行 Papal 集成 我正在使用 svn 和 python 2 6 的最新版本 django 然而 我发现每次当 paypal 的沙箱访问我的通知 url 时 我都会收到 500 Errno 32
  • TSQL-Merge 中条件匹配时更新和插入

    我一直在尝试编写一个存储过程 在其中我可以使用具有以下条件的合并来执行 UpSert 如果记录存在 则将目标的结束日期更改为昨天的日期 当前日期 1 如果记录不存在则插入新记录 这是我在 SP 中使用的表 tblEmployee CREAT
  • 推/拉布局的问题

    我有一个简单的布局 带有侧边栏 col 3 和内容 col 9 3 9 我试图得到它 所以在 xs 一侧我的布局是 Content Sidebar 所以我尝试添加col xs push 12到侧边栏和col xs pull 12然而 对于内
  • 如何修改此正则表达式以获取测试字符串中的所有日期

    test string dated as of October 17 2012 when we went caroling dated as of December 21 2011 when we ate bananas import re