如何使用regex提取\d{2}/\d{4}匹配结果后两空格之间的数字
正则提取解决方案
你可以根据你使用的正则引擎支持度,选择以下两种写法实现需求:
- 支持零宽后向断言的引擎(Java 8+、Python、JS ES2018+等)可直接匹配到目标数字,不需要额外处理捕获组:
正则表达式:(?<=\b\d{2}/\d{4}\s)\d+
逻辑说明:通过后向断言先定位到XX/XXXX格式的日期加空格的组合,再提取紧随其后的数字,匹配结果直接就是你需要的数值。 - 不支持零宽断言的低版本引擎,可使用捕获组实现,匹配后取第一个分组的内容即可:
正则表达式:\b\d{2}/\d{4}\s(\d+)\b
逻辑说明:括号包裹的(\d+)就是目标数字,匹配结果的第一个捕获组即为需要提取的内容。
代码使用示例(Python)
import re # 你的示例数据 raw_data = """Backlog 25 567 07/2022 120 2510 39/2021 23 590 08/2022 120 2630 40/2021 120 710 09/2022 120 2750 41/2021 120 830 10/2022 120 2870 42/2021 120 950 11/2022 120 2990 45/2021 120 1070 12/2022 120 3110 47/2021 120 1190 13/2022 120 3230 48/2021 120 1310 14/2022 240 3470 49/2021 120 1430 15/2022 120 3590 50/2021 120 1550 16/2022 120 3710 51/2021 120 1670 17/2022 240 3950 52/2021 120 1790 18/2022 120 4070 02/2022 120 1910 19/2022 120 4190 03/2022 120 2030 20/2022 120 4310 04/2022 120 2150 21/2022 240 4550 05/2022 120 2270 22/2022 120 4670 06/2022 120 2390 23/2022 120 4790 """ # 捕获组写法实现提取 pattern = re.compile(r'\b\d{2}/\d{4}\s(\d+)\b') target_numbers = pattern.findall(raw_data) print(target_numbers)
运行后输出结果为:['120', '23', '120', '120', '120', '120', '120', '120', '120', '120', '120', '120', '120', '120', '120', '120', '120', '120', '120', '120', '120', '120', '240', '120', '120', '120', '240', '120', '120', '120', '240', '120', '120', '120']
其中你举例的39/2021对应的23为列表的第二个元素,完全符合需求。
内容的提问来源于stack exchange,提问作者manjesh kumar
相关产品推荐
相关产品推荐

