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

如何用单个正则表达式提取指定边界间的任意行数文本?

单个正则提取两种场景的多行内容

目标文本:

"
Sample text 1!
,,Sample&.,? text 2?
\


-message
32 Another sample text 3
... sample text 4&
!Sample text 5%
\

需求说明

需要用单个正则完成两种场景的内容提取:

  • 场景1:提取位于"\n和\之间的所有行
  • 场景2:提取位于message\n和\之间的所有行
    两段内容均可能包含任意行数,目标内容需放在捕获组中,且匹配需以\结尾。

当前问题

你使用的正则("\n|message\n)+(.*\n.*\n)仅支持匹配固定两行,无法适配任意行数的场景,也未添加结尾匹配条件。

解决方案

最终正则表达式(需开启多行模式)

(?:^"$|^-message$)\n((?:.*\n)*?)(?=^\\$)

正则结构解释

  • (?:^"$|^-message$):非捕获组,精准匹配开头的标记行——要么是单独一行的",要么是单独一行的-message
  • \n:匹配标记行后的换行分隔符
  • ((?:.*\n)*?):核心捕获组,匹配任意多行内容:
    • (?:.*\n):非捕获的单行匹配(包含行尾换行)
    • *?:惰性量词,确保匹配到第一个结束标记\就停止,避免过度匹配
  • (?=^\\$):正向预查,确保捕获内容的下一行是单独的\,作为结束边界

匹配结果

  • 场景1捕获内容:
    Sample text 1!
    ,,Sample&.,? text 2?
    
  • 场景2捕获内容:
    32 Another sample text 3
    ... sample text 4&
    !Sample text 5%
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 10:37:06