Regex:将所有以给定字符开头的字符串块分组

tpxzln5u  于 7个月前  发布在  其他
关注(0)|答案(1)|浏览(75)

我在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,但它只在列表包含偶数个元素时才有效,而我需要它对任意数量的元素都有效。

ohfgkhjo

ohfgkhjo1#

目前你只匹配2次连字符(偶数),你不重复匹配。
您可以匹配以连字符开头的一行,然后可选地重复以换行符和连字符开头的后续行。

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

字符串
Regex demo
使用捕获组的更广泛的模式:

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


模式匹配:

  • 上一行中不以连字符开头的前导文本
  • 每个前导-后的空白字符
  • 每个项目至少有一个非空白字符(-除外)作为值

Regex demo

相关问题