我有这样的格式:
-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 不支持 Singleline (/s
) 标志,因此您需要发挥创意:
/^-(.*?):(.*(?:[\r\n]+[^-].*)*)/gm
/^-
- 以破折号开头(.*?):
- 将非冒号的所有内容捕获到组 1(.*
- 启动第 2 组并捕获所有内容(?:[\r\n]+[^-].*)*
- 如果检测到换行符并且该行不是以破折号开头,则将整行捕获到组中2;根据需要重复零次或多次)
- 关闭组 2/gm
- 全局和多行标志
关于javascript - 多行匹配的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60284739/