我正在使用字符串文本的js过滤器,我想使用正则表达式捕获列表项的整个列表,所以我可以计算它们并迭代它们。
请看看我想要实现的目标:https://regex101.com/r/Jd3JYW/2/
我知道如何使用这个正则表达式(^\*[^\*](.*)$)/gm
分别捕获线,但我需要捕获整个列表,所以我可以区分两个列表,所以我可以让它们从n.1开始。
我期望以下代码工作((^\*[^\*](.*)$)+)/gm
我认为这将捕获第一项(因为它适用于单独的行)以及任何后续直到patern被打破。但是它不起作用,我仍然获得了单独的线路。你有什么想法的人,如何捕获整个列表?谢谢。
您使用$
来匹配行结尾,但它是零宽度断言。你应该使用一些消费模式来匹配行结尾,比如[\r\n]+
:
/^(?:\*[^*\n].*(?:[\r\n]+|$))+/gm
细节
^
- 开始一条线(?:^\*[^*\n].*(?:[\r\n]+|$))+
- 1个或多个序列:
\*
- *
char
[^*\n]
- LF和*
之外的其他字符
.*
- 除了换行符之外的任何0 +字符,尽可能多
(?:[\r\n]+|$)
- 1 + LF或CR符号或行尾(以匹配最后一行)。