python - 无法使用正则表达式从 tycho.usno.navy.mil/timer.html 中提取时间
问题描述
我需要从提到的 URL 中提取美国海军天文台主时钟时间网页的 EDT、MDT 时间。我一直在尝试使用 re.findall 提取它,但我做不到。我正在使用以下正则表达式\d{2}\:\d{2}\:\d{2}\s(AM|PM)\s(MDT|PDT)
。输出只有 PM 和 MDT 或 PDT。
解决方案
首先,这是一个 HTML 页面,使用带有 HTML(或任何嵌套/分层数据)的正则表达式是一个坏主意。话虽如此,鉴于页面的相对简单性,我们可以让它在这种情况下滑动,但请记住,这不是推荐的做事方式。
您的问题是,如果您的模式包含捕获组,则re.findall()
仅返回捕获的组((AM|PM)
和)。(MDT|PDT)
您可以将它们变成非捕获组以收集整个模式,即:
matches = re.findall(r"\d{2}:\d{2}:\d{2}\s(?:AM|PM)\s(?:MDT|PDT)", your_data)
或者,您也可以使用re.finditer()
并提取匹配项:
matches = [x.group() for x in re.finditer(r"\d{2}:\d{2}:\d{2}\s(AM|PM)\s(MDT|PDT)", data)]
推荐阅读
- sql - 使用 if then 语句更改存储过程
- excel - 如何将 VBA 中的“0”考虑到数字格式为 01 到 09?
- angular - Angular 10 和 threex.domevents.js
- aws-codepipeline - 使用正则表达式匹配标签推送到 codecommit 触发 AWS codepipeline
- azure - Azure 资源提供程序
- sql-server - Azure SQL 数据库上的 SQL Server 报告服务 (SSRS)
- c - 你如何使用计数排序从c中的二维数组中仅排序一行
- grpc-java - 错误:泄漏:grpc 调用中的 ByteBuf.release()
- boundary - 尝试 ssh 连接时,Hashicorp 边界抛出失败到 WebSocket 拨号
- fpga - Vitis:将 16 字节变量存储到 4 个 32 位寄存器中