正则表达式:对以给定字符开头的所有字符串块进行分组

问题描述 投票:0回答:1

我在 javascript 中有一个类似的文本

some text
- list
- list
- list
more text
- another list
- another list
- another list

如何匹配以字符

-
开头的所有行,直到某行不以该字符开头?
例如,鉴于上面的文本,我需要匹配这两个组

- list
- list
- list

- another list
- another list
- another list

我尝试使用正则表达式

/^(-.*\n-.*|$)/gm
,但仅当列表包含偶数个元素时才有效,而我需要它适用于任意数量的元素。

javascript regex regex-group
1个回答
1
投票

目前您只匹配了 2 次连字符(偶数),并且您不会重复该匹配。

您可以匹配以连字符开头的单行,然后可以选择重复以换行符和连字符开头的以下行。

^-.*(?:\n-.*)*

正则表达式演示


使用捕获组的更广泛的模式:

^[^-\s].*\n(-\s+[^\s-].*(?:\n-\s+[^\s-].*)*)

模式匹配:

  • 前一行不以连字符开头的前导文本
  • 每个前导后面有一个空格字符
    -
  • 除了
    -
    之外,至少有一个非空白字符作为每个项目的值

正则表达式演示

© www.soinside.com 2019 - 2024. All rights reserved.