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