You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请教正则表达式pr\s+stats\s+(\d+)(?:hours|hrs)的含义,重点解析\s与\d

正则表达式 pr\s+stats\s+(\d+)(?:hours|hrs) 详细解析

没问题!我来帮你一步步拆解这个正则表达式,尤其是你困惑的\s和\d部分,先给你一个整体结论:这个正则是用来匹配类似 pr stats 24hours、pr stats 12hrs 这类字符串,核心目的是提取出pr stats后面跟着的小时数字(不管单位是全拼hours还是缩写hrs)。

下面逐个模块拆解:

1. pr

就是字面匹配小写的字符p和r,必须连续出现(默认大小写敏感,所以不会匹配PR或Pr)。

2. \s+

这是你提到的第一个元字符,我给你拆细讲:

  • \s:是空白字符元字符,它能匹配任何空白类字符,包括普通空格、制表符(Tab)、换行符、回车符这些。
  • +:是量词,代表“匹配前面的元素1次或多次”。
  • 合起来\s+的意思就是:匹配一个或多个连续的空白字符——不管是单个空格、三个空格,还是Tab加空格的组合,都能被它精准匹配。

3. stats

和前面的pr一样,字面匹配小写的s、t、a、t、s这五个连续字符,必须完全对应才会匹配。

4. \s+

和第2部分完全一致,用来匹配stats后面的一个或多个空白字符,允许stats和数字之间有任意数量的空白间隔。

5. (\d+)

这是你困惑的第二个元字符,也是这个正则的核心提取部分:

  • \d:是数字元字符,等价于[0-9],专门匹配0到9之间的任意单个数字。
  • +:同样是量词,代表匹配前面的元素1次或多次,所以\d+就是匹配一个或多个连续的数字(比如5、123、9999都能被匹配)。
  • 外面的():是捕获组,作用是把这部分匹配到的内容单独提取出来——比如匹配pr stats 24hours时,你可以直接从捕获组里拿到24这个数字值。

6. (?:hours|hrs)

这是一个非捕获组(开头的?:标记了它的身份),意思是它只负责匹配内容,但不会把匹配到的单位(hours或hrs)单独提取出来:

  • |:是“或”运算符,所以hours|hrs就是匹配全拼的hours,或者缩写的hrs,两种写法都能被识别。

举几个实际匹配的例子

匹配成功的场景:

  • pr stats 8hours → 捕获组提取到8
  • pr stats 16hrs → 多个空格被\s+匹配,捕获组提取到16
  • pr stats 24hours → 用Tab分隔也能匹配,捕获组提取到24

匹配失败的场景:

  • PR stats 5hours → 开头是大写PR,不匹配小写的pr
  • pr stat 3hrs → 是stat不是stats,字符不匹配
  • pr stats twohours → 数字部分是英文单词two,不匹配\d+

内容的提问来源于stack exchange,提问作者nirav bhanushali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:38:56