Javascript 多行匹配的正则表达式

Javascript 多行匹配的正则表达式,javascript,regex,Javascript,Regex,我有这样一种格式: -Note1: Value is 02 -Note 2: Line 1 Line 2 "Note1" "Value is 02" "Note 2" "Line 1 Line 2" (the value for Note 2 spans 2 lines, which makes it "Line 1\nLine 2") 当我用正则表达式替换字符串时,我希望它分组如下: -Note1: Value is 02 -Note 2: Line 1 Line 2 "Note1" "

我有这样一种格式:

-Note1: Value is 02
-Note 2: Line 1
Line 2
"Note1" "Value is 02"
"Note 2" "Line 1
Line 2" (the value for Note 2 spans 2 lines, which makes it "Line 1\nLine 2")
当我用正则表达式替换字符串时,我希望它分组如下:

-Note1: Value is 02
-Note 2: Line 1
Line 2
"Note1" "Value is 02"
"Note 2" "Line 1
Line 2" (the value for Note 2 spans 2 lines, which makes it "Line 1\nLine 2")
我当前的正则表达式有以下输出:

"Note1" "Value is 02"
"Note 2" "Line 1" (and leave out Line 2)
当前正则表达式:

/-(.*):(.*|\n*)/g

我能做些什么来实现我想要的呢?

因为JavaScript不支持单线/s标志,所以您需要获得创造性:

/^-(.*?):(.*(?:[\r\n]+[^-].*)*)/gm
/^--从短跑开始 *?:-将非冒号的所有内容捕获到组1中 *-启动第2组并捕获所有内容 ?:[\r\n]+[^-].*-如果检测到换行符且该行不以破折号开头,则将整行捕获到组2中;根据需要重复零次或多次 -封闭组2 /gm-全局和多行标志
您能解释一下所需输出背后的原因吗,以便有人能帮助您编写正则表达式来实现这一点吗?@ScottHunter我在帖子中解释过,注释2的值应该是:第1行\n第2行我希望注释2的值是:第1行\n第2行,很抱歉没有在帖子中解释!我使用Javascriptyou是救生员,我甚至没有想到在中间有一个冲刺。value@catmandx很高兴我能帮忙。我添加了一个关于正则表达式部分的解释,这样你就可以更好地理解我的思维过程。再次感谢你的详细解释,我已经为此苦苦挣扎了两天。