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

如何用正则匹配含#Test的行及后续符合规则的行直至空行?

正则匹配需求:包含#Test的行及后续符合规则的行,遇空行停止

需求说明

匹配任意包含#Test的行,以及该行之后所有以「任意数量空格后跟;」开头的行,遇到空行(或全空格行)时立即停止匹配。

示例1

1.        ; #Test
 2.        ; bbbb
 3.    
 4.        ; #Test
 5.
 6.        ; aaa

匹配结果:第1、2行是一个匹配项,第4行是另一个匹配项。

当前实现与问题

已实现正则:\s*(#Test).*(\s*;.*)*
当前问题:无法在遇到空行时停止匹配,会错误跨过空行继续匹配后续符合规则的行。

示例2

1.        ; #Test
 2.        ; bbbb
 3. 
 4. xxxx
 5. ; #Test
 6. yyyy
 7.
 8.    ; #Test
 9.
 10.   ; bbb

匹配结果:第1、2行是一个匹配项,第5行是另一个匹配项,第8行是另一个匹配项。

解决方案

使用带**多行模式(m修饰符)**的正则表达式,通过先行断言排除空行,实现遇空行停止:

^.*#Test.*$(?:\n(?!^\s*$)\s*;.*$)*

正则解释

  • ^.*#Test.*$:匹配包含#Test的整行(多行模式下^匹配行首,$匹配行尾)
  • (?:...):非捕获组,用于重复匹配后续符合规则的行
  • \n(?!^\s*$):换行后,通过先行断言确保当前行不是空行/全空格行
  • \s*;.*$:匹配以任意数量空格+;开头的行

注意事项

必须开启多行模式(m修饰符),否则^和$会匹配整个文本的开头和结尾,无法按行匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 19:48:06