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

如何编写正则表达式匹配指定规则多行文本并合并为单行

解决多行文本匹配与合并的正则问题

问题分析

你需要匹配并合并符合以下规则的文本块:

  • 首行:大写字母开头,冒号结尾
  • 后续连续行:每行含1-10个单词,首个单词大写开头,单词可包含,-./等字符
  • 最终将匹配块内的换行替换为,

你的原正则无法区分行首大小写,核心问题是未开启多行模式、未限制连续匹配的终止条件,且单词匹配逻辑不准确。

修正后的正则表达式

使用以下正则(需开启全局+多行模式,即gm标志):

^([A-Z].*:\n)([A-Z][\w.,/-]*(?:\s+[\w.,/-]+){0,9}(?:\n[A-Z][\w.,/-]*(?:\s+[\w.,/-]+){0,9})*)

正则拆解

  • ^([A-Z].*:\n):捕获首行,确保以大写字母开头、冒号结尾,且包含行尾换行
  • [A-Z][\w.,/-]*(?:\s+[\w.,/-]+){0,9}:匹配单条符合要求的后续行:
    • [A-Z][\w.,/-]*:首词以大写开头,允许包含字母、数字、下划线及,-./
    • (?:\s+[\w.,/-]+){0,9}:匹配0-9个后续单词(加上首词共1-10个),非捕获组避免额外分组
  • (?:\n[A-Z][\w.,/-]*(?:\s+[\w.,/-]+){0,9})*:匹配连续的多行符合要求的内容,直到遇到不符合的行或文本结束
  • gm标志:g全局匹配所有符合块,m让^/$匹配每行的开头/结尾

替换规则

将匹配到的内容中的\n替换为, 即可完成合并。

示例验证

  1. 正向示例1:
    输入:

    My favorite books are as follows:\nA great book\nThe Effective Book onscala.io\nTest Book\n
    

    匹配后替换结果:

    My favorite books are as follows:, A great book, The Effective Book onscala.io, Test Book
    
  2. 正向示例2:
    输入:

    My favorite books are as follows:\nA great book\nanother sentence\nAnother book\n
    

    仅匹配首行+第一行后续内容,替换结果:

    My favorite books are as follows:, A great book
    
  3. 反向示例:
    输入:

    My favorite books are as follows:\na great book\nanother sentence\n
    

    后续行首为小写,无匹配结果,不执行替换。

原正则的问题点

  1. 未启用m多行模式,导致^仅匹配整个文本的开头,而非每行开头
  2. 仅能匹配一行后续内容,无法处理连续多行符合要求的文本
  3. 单词匹配逻辑[a-zA-Z0-9,.\/ ]+包含空格,会误匹配多余空白,且{1,10}的重复逻辑错误,可能导致单词数量超出限制
  4. 未设置终止条件,无论后续行是否符合规则都会匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 05:09:54