Python正则表达式提取指定标识后的日期(非固定间隔)
解决方案
方法1:使用Python 3.7+支持的可变长度正向断言
Python 3.7及以后版本允许正向断言(lookbehind)中使用可变长度表达式,可直接匹配目标标识后的第一个日期:
import re target_text = "示例文本 Invoice Value (in INR): 任意内容 23/01/2023 其他内容" pattern = r'(?<=Invoice Value \(in INR\):.*?)\d{1,2}\/\d{1,2}\/\d{4}' result = re.search(pattern, target_text) if result: print(result.group()) # 输出:23/01/2023
(?<=Invoice Value \(in INR\):.*?):正向断言匹配标识后的任意非贪婪内容,确保找到第一个出现的日期\d{1,2}\/\d{1,2}\/\d{4}:匹配dd/mm/yyyy或d/m/yyyy格式的日期
方法2:兼容全Python版本的捕获组方案
如果需要兼容Python 3.7之前的版本,用捕获组提取目标日期更稳妥:
import re target_text = "示例文本 Invoice Value (in INR): 任意内容 23/01/2023 其他内容" pattern = r'Invoice Value \(in INR\):.*?(\d{1,2}\/\d{1,2}\/\d{4})' result = re.search(pattern, target_text) if result: print(result.group(1)) # 输出:23/01/2023
- 先匹配目标标识,再用
.*?非贪婪匹配到第一个日期前的内容,最后用()捕获日期部分 - 从匹配结果的
group(1)中提取目标日期即可
关键说明
- 用
.*?而非.*:非贪婪匹配避免跳过第一个日期,匹配到后续无关的日期 - 转义特殊字符:
(和)是正则特殊字符,需要用\转义
内容的提问来源于stack exchange,提问作者Kaustub Dutt Pandey
相关产品推荐
相关产品推荐

