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

如何使用正则表达式从段落中提取指定语句及13位编码

正则提取优化方案

核心需求

需通过正则从大段文本中提取三类目标内容:

  • 固定语句:Updating measure to exclude the ean added from catalogue list
  • 上述固定语句与13位数字编码之间的任意内容
  • 13位纯数字编码(示例:7090056511721)
    特殊适配要求:13位数字编码不一定位于匹配片段末尾,编码后方可存在其他文本内容。

测试样例

Query Opened: /* Updating measure to exclude the ean added from
catalogue list */ Cartesian scope: ([Box].[Box].Filter( #.Name == "Box
1") * [LocalPricePoint].[LocalPricePoint].Filter( #.Name == "Premium") * [Gender].[Gender].Filter( #.Name == "Male") * [LocalUniverse].[LocalUniverse].Filter( #.Name == "Creator") *
[BusinessCategory].[BusinessCategory].Filter( #.Name == "Frames") *
[Time].[Trimester].Filter( #.Name == "22.2") * &CWV *
[Product].[EAN].Filter(#.Name in {[7090056511721],[7090056511714]}) *
Location.[Banner].Filter( #.Name == "SCCH1") *
Profile.[Profile].Filter(#.Name in
{[Premium]}));Measure.[IntNewBAStatus]=1;End Scope;

原有写法问题

原有待优化模式:

pattern = ('Updating measure to exclude the ean added from catalogue list')('any words in between')(\d{13})?

存在的核心问题:

  • 未处理固定语句内部可能出现的换行、多空白字符隔断场景,测试样例中固定语句被拆为两行,直接按整句精确匹配会失败
  • 缺失中间任意内容的匹配逻辑,未做非贪婪控制,极易出现匹配过界问题
  • 13位数字部分加了?可选标记,不符合必须提取到对应编码的要求
  • 未做数字边界校验,容易从更长的连续数字串中错误截取13位片段

优化后正则实现

模式代码(Python示例)

import re

pattern = r'Updating\s+measure\s+to\s+exclude\s+the\s+ean\s+added\s+from\s+catalogue\s+list([\s\S]*?)(?<!\d)(\d{13})(?!\d)'
# 单次匹配取首个符合要求的结果
match_result = re.search(pattern, test_text)
if match_result:
    full_segment = match_result.group(0) # 完整匹配片段:固定语句+中间内容+13位编码
    middle_content = match_result.group(1) # 固定语句与编码之间的任意内容
    ean_code = match_result.group(2) # 提取到的13位编码

适配逻辑说明

  • 固定语句的单词间用\s+匹配,自动兼容空格、换行、制表符等各类空白隔断场景,适配样例中固定语句跨行的情况
  • 中间内容用[\s\S]*?做非贪婪匹配,会定位到离固定语句最近的符合要求的13位数字,不会无限制向后匹配造成过界
  • 13位数字前后添加负向零宽断言(?<!\d)和(?!\d)做边界校验,确保匹配到的是独立的13位数字,不会从更长数字串中错误截段
  • 移除了数字部分的可选标记,只有匹配到符合规则的13位数字才会返回结果
  • 数字匹配完成即终止当前匹配流程,无需要求编码位于片段末尾,完全兼容编码后方存在其他文本的场景
  • 如果需要提取固定语句后所有符合规则的13位编码,可在匹配到固定语句的起始位置后,对后续文本段使用re.findall(r'(?<!\d)\d{13}(?!\d)', sub_text)即可批量获取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:24:29