Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检测多行正则表达式示例的结尾(相当于\z)_Javascript_Regex_String - Fatal编程技术网

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正则表达式引擎没有实现这一基本功能,使它转而寻找一个literal
z

有没有办法复制
\z
行为

我尝试了以下正则表达式,但没有任何具体结果:
^(+++)(.*)(=^++)|(?:$(?!*))

您可以使用

/^(\++) (.*?)(?=^\+|$(?!.))/gms
$(?!)
部分匹配未后跟任何字符的行尾(
with
s
修饰符匹配任何字符)

但是,展开延迟点匹配部分以获取不以
+
开头的整行更有效:

/^(\++) (.*(?:\r?\n(?!\+).*)*)/gm
看。请注意
s
标志的缺失

详细信息

  • ^
    行的开始(由于
    m
    标志)
  • (\++)
    -捕获组1:一个或多个
    +
    符号
  • -空格
  • (.*(::\r?\n(?\+).*)
    -捕获组2:
    • *
      -0+字符(断线字符除外),尽可能少
    • (?:\r?\n(?.\+).*)
      -0次或多次重复
      • \r?\n(?!\+)
        -不紧跟
        +
        的CRLF或LF行结尾(如果需要,可以使用
        (?!\++)
      • *
        -0+字符(断线字符除外),尽可能少