Javascript 检测多行正则表达式示例的结尾(相当于\z)
我试图匹配字符串的每个部分,从一个或多个Javascript 检测多行正则表达式示例的结尾(相当于\z),javascript,regex,string,Javascript,Regex,String,我试图匹配字符串的每个部分,从一个或多个+开始,在它找到另一个实例或样本结尾时结束 样本如下: + Horizontal Rules Lorem ipsum + Lists Everything about lists ++ Bulleted Lists Make a list element by starting a line with an asterisk. To increase the indent put extra spaces before the asterisk.
+
开始,在它找到另一个实例或样本结尾时结束
样本如下:
+ Horizontal Rules
Lorem ipsum
+ Lists
Everything about lists
++ Bulleted Lists
Make a list element by starting a line with an asterisk. To increase the indent put extra spaces
before the asterisk.
+ Another title
content
我当前使用的正则表达式(/^(+++)(.*?(=^\++)/gms
)将样本分割为不同的匹配项。但在本例中,最后一部分不匹配,因为“向前看”找不到任何内容:
+ Another title
content
我尝试使用\z
,它应该与多行正则表达式中的示例结尾相匹配:
^(\++) (.*?)(?=^\++|\z)
但不幸的是,JavaScript正则表达式引擎没有实现这一基本功能,使它转而寻找一个literalz
有没有办法复制\z
行为
我尝试了以下正则表达式,但没有任何具体结果:^(+++)(.*)(=^++)|(?:$(?!*))
您可以使用
/^(\++) (.*?)(?=^\+|$(?!.))/gms
$(?!)
部分匹配未后跟任何字符的行尾(
withs
修饰符匹配任何字符)
但是,展开延迟点匹配部分以获取不以+
开头的整行更有效:
/^(\++) (.*(?:\r?\n(?!\+).*)*)/gm
看。请注意s
标志的缺失
详细信息
行的开始(由于^
标志)m
-捕获组1:一个或多个(\++)
符号+
-空格
-捕获组2:(.*(::\r?\n(?\+).*)
-0+字符(断线字符除外),尽可能少*
-0次或多次重复(?:\r?\n(?.\+).*)
-不紧跟\r?\n(?!\+)
的CRLF或LF行结尾(如果需要,可以使用+
)(?!\++)
-0+字符(断线字符除外),尽可能少*