如何用正则表达式提取交易记录中长度可变的描述字段
提取交易描述的正则解决方案
针对你提供的交易文本格式,我们可以利用正则分组+非贪婪匹配来精准提取长度和空格不固定的交易描述字段。
示例交易文本
26 Jan The Gym Debit Card Transaction £656.40
可行的Python正则实现
import re # 交易文本示例 text = "26 Jan The Gym Debit Card Transaction £656.40" # 定义正则模式,覆盖所有已知交易类型 pattern = r'^\d+ \w{3} (.*?) (Debit Card Transaction|Online Transaction|Direct Debit|Standing Order|Automated Credit) £\d+\.\d{2}$' match_result = re.match(pattern, text) if match_result: # 提取并清理交易描述(去除前后可能的空格) company_desc = match_result.group(1).strip() print(company_desc) # 输出: The Gym
模式说明
^\d+ \w{3}:匹配开头的日期部分(如"26 Jan"),\d+匹配日期数字,\w{3}匹配3位月份缩写(.*?):非贪婪匹配,捕获日期之后、交易类型之前的所有内容(即目标交易描述),非贪婪模式避免误匹配到交易类型的内容(Debit Card Transaction|...):枚举所有固定的交易类型,精准定位交易描述的结束边界£\d+\.\d{2}$:匹配结尾的金额格式,确保整个字符串符合交易记录的结构
之前正则的问题
你之前的正则使用了字符集[],但字符集仅用于匹配单个字符,无法实现"排除整个固定模式"的逻辑,因此会错误地匹配零散字符,达不到预期效果。
内容的提问来源于stack exchange,提问作者Puj
相关产品推荐
相关产品推荐

