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

正则表达式匹配问题:捕获含SOA的Sender/From文本块

解决方案

你的需求是捕获以Sender:或From:开头、且包含关键词SOA的文本块,原正则的匹配逻辑有问题,没法精准划分块的边界,也没强制保证SOA在块内。

试试这个正则(要开启多行模式m,让^匹配每行开头):

^(From:|Sender:)(?:\s|\S)*?SOA(?:\s|\S)*?(?=\n^(?:From:|Sender:)|\Z)

正则拆解:

  • ^(From:|Sender:):匹配行首的From:或Sender:,作为每个目标块的起始标记
  • (?:\s|\S)*?SOA:非贪婪匹配任意字符,直到碰到SOA(确保块内一定包含目标关键词)
  • (?:\s|\S)*?:继续非贪婪匹配剩余内容,直到触发边界
  • (?=\n^(?:From:|Sender:)|\Z):正向预查,匹配到下一个From:/Sender:的行首,或者文本结尾,以此确定块的结束位置

匹配结果:

用这个正则处理你的原始文本,会准确得到两个目标块:
Group-1

From:Jane Smith 
body: This email is unrelated to SOA.

Group-2

Sender:Jenny 
Let's learn SOA! 

原正则问题分析:

原正则里(([\s\S]*)SOA)*?的嵌套结构会导致匹配范围混乱,负前瞻(?!(From:|Sender:))的位置不对,没法正确识别块的结束边界,而且没有强制要求SOA必须出现在匹配块中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 04:59:56