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

正则表达式问题:匹配限定词间首个目标内容,现有正则失效求解决

正则提取解决方案

问题背景

现有三行文本:

"Received money from SAYLOR SELLY EU S.A.R.L. with reference XXWW025 MENTINUI-NOM 3 654654465/WCX6565223323"
"Card transaction of EUR issued by CaniR* I- CKOUION"
"Card transaction of EUR issued by Suil Flim KL RUIOKE SOR"

需要提取以下目标内容:

  • SAYLOR SELLY EU S.A.R.L.
  • CaniR* I- CKOUION
  • Suil Flim KL RUIOKE SOR

原正则(by|from|to)(.*)(with|\")失效原因:

  1. 第二、三行无with或"结尾,无法触发匹配;
  2. .*为贪婪匹配,即使第一行能匹配,也会包含with之前的所有冗余内容,不符合提取需求。

可行正则方案

使用非贪婪匹配结合停止条件的正则表达式:

(?:from|by)\s+(.*?)(?:\s+with|$)

正则解释

  • (?:from|by):匹配目标前缀from或by,非捕获组不占用分组编号;
  • \s+:匹配前缀后的一个或多个空格;
  • (.*?):非贪婪捕获组,提取目标内容,遇到停止条件立即终止;
  • (?:\s+with|$):停止条件,匹配 with或者行尾,确保第一行在with前停止,后两行匹配到文本结尾。

代码示例(Python)

import re

text_list = [
    "Received money from SAYLOR SELLY EU S.A.R.L. with reference XXWW025 MENTINUI-NOM  3 654654465/WCX6565223323",
    "Card transaction of EUR issued by CaniR* I- CKOUION",
    "Card transaction of EUR issued by Suil Flim KL RUIOKE SOR"
]

pattern = re.compile(r'(?:from|by)\s+(.*?)(?:\s+with|$)')
for text in text_list:
    result = pattern.search(text)
    if result:
        print(result.group(1))

输出结果

SAYLOR SELLY EU S.A.R.L.
CaniR* I- CKOUION
Suil Flim KL RUIOKE SOR

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:55:41