Javascript $split()(jsonata)函数中的regex给出;正则表达式匹配零长度字符串“;为什么?

Javascript $split()(jsonata)函数中的regex给出;正则表达式匹配零长度字符串“;为什么?,javascript,regex,parsing,split,jsonata,Javascript,Regex,Parsing,Split,Jsonata,我有一个字符串文本,如下所示,每当出现新行并以日期dd/mm/yyyy开始时,我都要拆分文本。 我在javascript中使用jsonata$split()函数。但是,我得到了一个jsonata错误,因为下面的“正则表达式匹配零长度字符串”。请帮助我如何解决这个问题 text = "22/03/2012 intro 20/10/2019\n" + "22/03/2012 body\n" + "more body 2

我有一个字符串文本,如下所示,每当出现新行并以日期dd/mm/yyyy开始时,我都要拆分文本。

我在javascript中使用jsonata$split()函数。但是,我得到了一个jsonata错误,因为下面的“正则表达式匹配零长度字符串”。请帮助我如何解决这个问题

text = "22/03/2012 intro 20/10/2019\n" + 
       "22/03/2012 body\n" + 
       "more body 22/04/2020\n" +
      "22/03/2012 stuff more stuff"


$split(text , /\\r?\\n(?=(?:0[1-9]|[12][0-9]|3[01])[- \\/.](?:0[1-9]|1[012])[- \\/.](?:19|20)\\d\\d)/))
//I want the output to be [ "22/03/2012 intro 20/10/2019",
//                           "22/03/2012 body more body 22/04/2020",
//                           "22/03/2012 stuff more stuff] 
// But my output now is [ "22/03/2012 intro 20/10/2019",
//                           "22/03/2012 body/n + more body 22/04/2020",
//                           "22/03/2012 stuff more stuff]                          
const str=“22/03/2012简介\n”+
“2012年3月22日正文\n”+
“更多正文\n”+
“2012年3月22日\n”+
“更多内容\n”;
log(str.match(/^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][a-zA-Z\s]+(?:[a-zA-Z\s]+)/gm));
//将记录[“22/03/2012简介\n”,“22/03/2012正文\n更多正文\n”,“22/03/2012素材\n更多素材\n”]
使用

$split($replace(text,/(\r?\n)\s*\+\s*(?=\d{2}[-\/.]\d{2}[-\/.]\d{4})\r?\n\s*\+\s*/g,$1'),/\r?\n/)

第一个
$replace
删除加号和换行符,并在必要时替换为行尾


$split
one使用回车+换行或换行进行拆分。

您是否尝试在
\n
而不是
^
上进行拆分,因为
^
在字符串开头也匹配。我将进一步避开模式中的
/
。嘿@BobbleBobble,感谢您的帮助,但结果是我的输入是一个包含“\n”和“+”的大字符串,因此不起作用://嘿,非常感谢您的帮助和详细答案!但是,我的输入已更改。它是一个包含“\n”&“+”的长字符串,因此很遗憾无法正常工作://嘿,谢谢您的帮助,但很不幸,我的输入是一个包含“\n”&“+”的大字符串,因此无法正常工作://。我现在尝试在输入上运行它,但它只返回第一个元素