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

如何调整正则表达式以提取Total Hours行的最后一个小数数字?

问题:从PDF工时表中提取Total Hours行的最后一个小数数字

我尝试用正则表达式从PDF工时表中解析薪资周期内的总工时(Total Hours)。示例内容如下:

Total Overtime Hours:
Total Hours: 2.2 1.0 1.0 3.5 5.0 12.7
Signature:

现有正则表达式:
(?<=Total Hours:*(?:.*?( )+){6}).*

这个表达式仅适用于每周工作5天的员工,若员工工作天数多于或少于5天(如下例)则会失效:

Total Overtime Hours:
Total Hours: 2.2 1.0 1.0 3.5 5.0 6.3 19.0
Signature:

请问如何调整正则表达式,以始终提取以"Total Hours:"开头行的最后一个小数数字?


解决方案

方案1:正向预查定位匹配

使用以下正则表达式:
(?<=Total Hours:.*)\d+\.\d+

  • 逻辑:(?<=Total Hours:.*) 作为正向预查,确保目标小数位于"Total Hours:"所在行的内容之后;\d+\.\d+ 匹配标准小数格式,借助正则的贪婪特性,自动匹配该行最后一个符合要求的小数。

方案2:捕获组提取末尾数字

如果你的正则环境支持捕获组,可使用:
Total Hours:.*?(\d+\.\d+)$

  • 逻辑:Total Hours:.*? 匹配从行首到最后一个小数前的所有内容,(\d+\.\d+)$ 捕获行尾的小数数字,直接提取捕获组1的结果即可。

方案3:高效精准匹配

针对行内数字以空格分隔的特点,可简化为:
(?<=Total Hours:.* )\d+\.\d+

  • 逻辑:用.* 匹配到该行最后一个空格,再匹配后续的小数,减少正则回溯,提升匹配效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 16:52:38