在正则表达式中匹配小时/分钟/秒 - 更好的方法吗?

2023-12-30

所以我需要从这样的条目中获取小时、分钟和秒:

  • 04:43:12
  • 9.43.12
  • 1:00
  • 01.04
  • 59
  • 09

前两个是小时、分钟和秒。 接下来是分钟和秒。 最后两秒只是几秒钟。

我想出了这个正则表达式,它有效......:

\A(?<hours>\d{1,2})(?::|\.)(?<minutes>\d{1,2})(?::|\.)(?<seconds>\d{1,2})\z|\A(?<minutes>\d{1,2})(?::|\.)(?<seconds>\d{1,2})\z|\A(?<seconds>\d{1,2})\z

但它很丑陋,我想将其重构为不是 3 个不同的表达式(主要是为了学习)。我试过这个:

\A(?:(?<hours>\d{1,2})(?::|\.){0,1})(?:(?<minutes>\d{1,2})(?::|\.){0,1})(?:(?<seconds>\d{1,2}){0,1})\z

但这是行不通的——分和秒有时会被搞砸。我的脑子很痛,我不知道我做错了什么。


我的建议:

(?:(?:(?<hh>\d{1,2})[:.])?(?<mm>\d{1,2})[:.])?(?<ss>\d{1,2})

结构化的:

(?:                     # group 1 (non-capturing)
  (?:                   #   group 2 (non-capturing)
    (?<hh>\d{1,2})      #     hours
    [:.]                #     delimiter
  )?                    #   end group 2, make optional
  (?<mm>\d{1,2})        #   minutes
  [:.]                  #   delimiter
)?                      # end group 1, make optional
(?<ss>\d{1,2})          # seconds (required)

如果您愿意,您可以将正则表达式包裹在分隔符中 - 例如单词边界\b或弦锚(^ and $).

编辑:考虑一下,您可以进一步限制它以仅捕获有意义的时间。使用

[0-5]?\d

代替

\d{1,2}

仅在适当的情况下捕获 0 到 59 之间的值(秒和分钟)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在正则表达式中匹配小时/分钟/秒 - 更好的方法吗? 的相关文章

  • Kotlin Regex 命名组支持

    Kotlin 是否支持命名正则表达式组 命名的正则表达式组如下所示
  • 正则表达式:如何像 DOM 渲染器一样删除额外的空格/换行符(处理)

    我想从 HTML 标记中 去除 所有 某种程度上 不必要的空格 Obj Render 对于这样的nodeValue 这个解决方案 https stackoverflow com a 2898231 294619工作得很好 但是 当有不间断空
  • 什么是日历队列?

    我正在致力于构建一个离散事件模拟器 维基百科提到有几种通用优先级队列非常适合在 DES 中使用 具体来说 它提到日历队列是一个很好的结构 我找到了一份 pdf 1988 年的 其中提到了日历队列 但在大多数情况下我找不到关于它们的任何其他内
  • Unix grep 正则表达式包含“x”但不包含“y”

    我需要一个用于 unix grep 的单遍正则表达式 其中包含 alpha 但不包含 beta grep alpha lt gt grep v beta 这里的其他答案展示了一些可以扭曲不同种类的正则表达式来做到这一点的方法 尽管我认为答案
  • 正则表达式exec函数不能多次工作[重复]

    这个问题在这里已经有答案了 var ts 00 00 06 705 var regularExpression 0 9 0 9 2 0 9 2 0 9 3 g var parsedTs1 regularExpression exec ts
  • R Strsplit 将分隔符保留在第二个元素中

    我已经尝试解决这个小问题近2个小时了 但没有成功 我只想用分隔符分隔字符串 一个空格后跟任何字符 在第二个元素中 我想保留分隔符 而在第一个元素中 它不应出现 例子 x lt 123123 123 A123 strsplit x A Z 结
  • 作为正则表达式查找有向循环图中的所有路径

    设 G V E r 一个有根有向图 由一组顶点 V 和一组边 E 以及指定的根节点 r 定义 该图可能包含循环 任务 给定 V 中的两个顶点 x 和 y 找到all从 x 到 y 的路径 由于允许循环 因此路径集合显然可以是无限的 因此 我
  • 使用高级正则表达式在java中分割字符串

    我正在尝试在java中使用String split 将整个文档拆分为子字符串 制表符空格和换行符 但我想排除引号之间存在单词的情况 Example 这个文件 CATEGORYTYPE1 CATEGORYSUBTYPE1 OPTION1 AB
  • 正则表达式查找 bcrypt 哈希值?

    我正在寻找使用正则表达式 在 PowerGrep 中 在数据库中查找 bcrypt 哈希字符串 尝试了这个正则表达式 A Za z 0 9 60 但没有找到匹配项 Bcrypt 哈希长度为 60 个字符 以 2y 开头 Example 2y
  • 正则表达式 - 删除两个标点符号之间的空格,但不删除标点符号和字母之间的空格

    我有以下正则表达式用于删除标点符号之间的空格 re sub r s W s r 1 s 它在我的几乎所有测试用例中都运行良好 除了这个 This is a test 为此我需要有 This is a test and get This is
  • 使用 O(1) 辅助空间迭代二叉树

    是否可以在 O 1 辅助空间中迭代二叉树 不使用堆栈 队列等 或者这已被证明是不可能的 如果可以的话 怎样才能做到呢 编辑 我得到的关于如果有指向父节点的指针就可能实现这一点的响应很有趣 我不知道可以做到这一点 但取决于您如何看待它 这可以
  • 正则表达式 在 Coldfusion 中匹配整个单词字符串

    我正在尝试这个例子 第一个例子 keyword star myString The dog sniffed at the star fish and growled regEx b keyword b if reFindNoCase reg
  • 在 JavaScript 中查找内容是否具有当前网站 url

    我正在使用 TinyMCE 作为编辑器 我想执行移动验证和 URL 验证 什么是不允许的 描述中不允许输入手机号码 仅允许在描述框中输入相同的应用程序 URL 如果用户输入其他网站网址 则会引发验证错误 我使用下面的代码来验证移动设备和 u
  • 在 python 中使用正则表达式返回唯一匹配

    生成正则表达式的所有唯一匹配项的最有效 或最 Pythonic 方法是什么 现在我刚刚申请set 使用后findall 但我不确定是否有更好的方法 查找所有匹配项的其他方法 使用其他方式通过正则表达式在文本中搜索 您可以与一路上获得的匹配项
  • 如何在 python 2.7 中使用 re.UNICODE?

    我正在尝试使用 re UNICODE 标志来匹配可能包含 unicode 字符的字符串 但它似乎不起作用 例如 Python 2 7 12 default Dec 4 2017 14 50 18 GCC 5 4 0 20160609 on
  • 用于提取 FDF 数据的 PHP 正则表达式代码

    我正在尝试使用 PHP 和正则表达式解析 FDF 文件 但我就是无法理解正则表达式 我一直在解析文件以生成数组 FDF 1 2 1 0 obj lt lt FDF lt lt Fields lt lt V email protected c
  • 如何在 标签中用 %20 替换空格

    我想替换 html 文本的图像标签中的所有空格 Example img src to img src photo 201 jpg 我没有找到 preg replace 的解决方案 但它可能是一个简单的正则表达式行 谢谢 Edit 抱歉各位
  • Pandas 字符串提取所有匹配项

    我正在学习 pandas 系列字符串方法中的正则表达式操作 我能够从字符串中提取第一个数字 但我的正则表达式与第二个数字不匹配 如何捕获这两个数字 注意第二行 第二个元素在这里是 NAN CODE import pandas as pd d
  • Python 按照层次结构按多个分隔符分割字符串

    我只想根据多个分隔符 例如 and 和 按顺序分割字符串一次 例子 121 34 adsfd gt 121 34 adsfd dsfsd and adfd gt dsfsd adfd dsfsd adfd gt dsfsd adfd dsf
  • 删除 .htaccess 中 URL 中各处的多组斜杠

    我目前有一个网站 访客可以访问每个网址 并使用任意数量的斜杠来分隔文件夹名称 例如 如果 URL 应该是 http example com one two three four 然后用户可以通过以下任意方式访问同一页面 http examp

随机推荐

  • Microsoft 团队获取来电号码

    我们有一个非常简单的用例 当团队中的用户被呼叫时 我们需要的只是呼叫者的号码 我们的想法是将这个数字传递到我们的后端系统并弹出相关信息 如果存在 所以只需要一种方法来读取呼叫者的号码 我查看了通话记录 API 但他们会提供已经发生的通话的信
  • MDX DRILLTHROUGH 失败但 select 可以成功执行

    我有以下 MDX 查询 它在执行时成功返回度量 SELECT Measures Closed Quote OE Retail ON COLUMNS FROM Sales WHERE Posting Date Date YQMD Month
  • sql服务器+VB 6.0

    我在 vb 6 0 中创建了一个数据库项目 我已经在 sql server 2000 中创建了数据库 我使用 adodc 和 odbc 连接到数据库 我想将我的 sql 服务器保留在一个系统中 将我的 vb 6 0 应用程序保留在另一个系统
  • 在 JSF 子视图中混合 HTML 和 JSF

    我今天遇到的问题是关于使用 JSF 处理包含的 JSP 中的 HTML 情况如下 我在 RAD 上使用 IBM 的 JSF 1 2 和 Websphere v6 1 我有一个自定义组件 来自公司层 来使用选项卡 为了获得更清晰的代码 我只想
  • Ember:动态切换到所选语言(使用 i18n 库)

    我正在使用 ember i18n 库来翻译我的应用程序中使用的静态字符串 由于语言文件相当大 我不想在应用程序启动时加载所有可能的语言词典 因此 我想在用户选择更改语言时动态加载字典 我已经做了第一个实现 效果相当好 See http js
  • 通过@leader@model访问automlleader时返回空列表

    Running h2o automl 返回排行榜中的单个模型 但是 当尝试通过访问实际模型时 leader model 出现以下错误 is H2OFrame x 中的错误 尝试从对象获取槽 指标 没有槽的基本类 NULL 另外 打电话时h2
  • 如何调试失败的 Fargate 任务初始化

    我有一个 Fargate 任务 已计划使用 CloudWatch Event 规则运行 并在成功运行时将时间戳输出到数据库 它还会在每次运行时向 CloudWatch 输出一个日志文件 但是 有 1 次未创建日志文件 并且未更新数据库 我怀
  • 为特定子域设置会话cookie

    我有一个具有多个子域的网站 它们共享一个唯一的 PHP 会话 cookie 来识别每个用户 我通过简单地添加来做到这一点session cookie domain mydomain com 但是我想知道是否可以指定多个子域 以便 cooki
  • Javascript 增量不起作用

    好吧 我不知道到底什么才是一个好的标题 因为这是一个最特殊的情况 或者我异常愚蠢 这就是我想做的 创建一个简单的
  • 数组元素的重复副本:MATLAB 中的游程解码

    我正在尝试使用 值 数组和 计数器 数组将多个值插入到数组中 例如 如果 a 1 3 2 5 b 2 2 1 3 我想要某个函数的输出 c somefunction a b to be c 1 1 3 3 2 5 5 5 其中 a 1 重复
  • 在 python/bash 脚本中编写 Git 挂钩 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我最近需要编写 git hooks 以便所有提交都引用特定的票证 我希望有一个地方可以开始学习 Pro
  • C# 泛型接口协方差

    我有一个界面IControl
  • 自加入条件查询

    所以我有一个名为 用户 的表 其字段为 userId userName 主管 ID 我想获取特定用户的主管的用户名 CriteriaBuilder criteriaBuilder em getCriteriaBuilder Criteria
  • 如何使用 React Intl 动态添加语言环境数据?

    我正在使用 React intl 来实现 UI Util 库的国际化 该库有一个名为 i18n 的文件夹 其中我放置了不同区域设置的 json 文件 如果该库的用户想要添加对其他区域设置的支持 他 她可以放置带有相应区域设置的键 值对的附加
  • VS 2012 RC 中新增的 HTML 文档类型有哪些?

    我刚刚安装了 VS 2012 RC 在 HTML 工具栏下拉列表中它有很多新选项 文档类型 HTML5 HTML5 XHTML5 这两个 HTML5 选项有什么区别 我认为 HTML5 的建议是不要指定 DOCTYPE 所以第一个选项有点像
  • VBS 网站登录脚本 - “需要对象”错误

    我正在尝试编写我的第一个网站登录脚本 但总是在第 9 行位置 9 处收到错误消息 需要对象 getElementByID 800A01A8 这是我的实际工作站点的代码 Call Main Function Main Set IE WScri
  • ui-router 用于仅具有特定值的路由

    我正在尝试为具有以下结构的多个独特登陆页面构建一条路线 domain com state city category 如何定义路线 以便州 城市和类别只能是预定义值之一 又名 state ca ma ak az ar i city los
  • java并发:多个写入器,一个读取器

    我需要在我的软件中收集一些统计数据 并且我正在努力使其快速且正确 这对我来说并不容易 首先是我到目前为止的代码 有两个类 一个 StatsService 和一个 StatsHarvester public class StatsServic
  • 切换 增强指针精度

    我们基本上是在创建一个控制面板小程序 我们需要在鼠标属性中切换 增强指针精度 为此 我们需要调用SystemParametersInfo with SPI GETMOUSE 它有一个包含 3 个元素的数组作为其第三个参数 我是 PInvok
  • 在正则表达式中匹配小时/分钟/秒 - 更好的方法吗?

    所以我需要从这样的条目中获取小时 分钟和秒 04 43 12 9 43 12 1 00 01 04 59 09 前两个是小时 分钟和秒 接下来是分钟和秒 最后两秒只是几秒钟 我想出了这个正则表达式 它有效 A