正则匹配需求:从可变长度行提取XX;YY毫秒数值(可不用lookbehind/lookahead)
无需环视的正则提取毫秒数值方案
嘿,我来给你分享个不用lookbehind/lookahead的简单解法!针对你这种格式的行数据,完全可以靠捕获组+固定上下文匹配搞定,不用搞复杂的环视语法。
核心思路:利用数据里的固定文本前缀(比如
Time spent:和Time expected:)作为锚点,直接捕获后面跟着的数字部分,适配行长度不固定的场景。推荐正则表达式:
Time spent: (\d+)ms ; Time expected: (\d+)ms拆解说明:
Time spent:是固定前置文本,帮我们精准定位到第一个毫秒数值的位置(\d+)是第一个捕获组,专门提取XX对应的数字(\d+匹配1个及以上连续数字)ms ; Time expected:是两个数值之间的固定分隔文本,用来衔接第二个数值的定位(\d+)是第二个捕获组,提取YY对应的数字
使用示例:
假设你的一行数据是:Item Received during transaction XYZ123; Time spent: 42ms ; Time expected: 25ms; Date 20-07-2024
用上面的正则匹配后,第一个捕获组会拿到42,第二个捕获组拿到25,正好是你需要的两个毫秒数值。兼容优化提示:如果数据里偶尔有空格格式不一致(比如多空格、少空格),可以把正则里的空格替换成
\s*(匹配0个或多个空格),调整后的正则兼容性更强:Time spent:\s*(\d+)ms\s*;\s*Time expected:\s*(\d+)ms
内容的提问来源于stack exchange,提问作者DDDDEEEEXXXX
相关产品推荐
相关产品推荐

