正则表达式匹配多行并提供匹配结束条件

Regex Match multiple lines and provide condition for end of match

所以我尝试使用正则表达式解析这段文本:

Name: Test Data 1
Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec feugiat nulla id nisi venenatis blandit.
 Donec blandit egestas orci, at tristique dui vehicula in. Maecenas fringilla fringilla enim, in pulvinar ex gravida
 in. Nam cursus facilisis ante, sed tristique nisl sagittis sed. In auctor felis id neque suscipit ullamcorper. Nunc
 faucibus elit sed metus vestibulum, ullamcorper pulvinar nisi auctor. Praesent sodales orci mauris, eget dapibus
 mauris sodales in. Ut iaculis, ante vitae ullamcorper semper, metus tortor auctor purus, eu convallis nulla lacus
 in tellus. Phasellus feugiat tempus neque, in fringilla nisi scelerisque sed. Donec elementum diam nec mattis dignissim.

我正在尝试解析它以将其加载到数据库中。

使用此表达式,我试图在 "Name" 和 "Description" 参数上进行匹配,但也尝试在参数值上进行匹配(有时可能是多个参数值)线)。

(.*):\s(.*)

我已经搜索了一段时间,我似乎无法使它匹配整个段落,但当它遇到一个空行时停止。

我希望结果如下:

https://regex101.com/r/mG2ms9/3

谢谢

您可以使用以下内容:

(.*?):\s([\s\S]*?)(?=\n(?:\n|\w|$))

Here it is on regex101.

[\s\S] 匹配任何字符,甚至换行符(而 '.' 默认不匹配)。

然后我们匹配尽可能少的字符 (*?),直到下一行为空白 (\n),以单词字符 ([=14) 开头=]), 或者是字符串的结尾 ($).

我们可以使用 \w 选项,因为描述参数中的所有新行后面都跟有 space。如果情况并非总是如此,您可以将 \w 替换为 .*: 之类的内容,以检查下一行是否包含“:”,如果是则停止。

请注意,我禁用了多行模式;这里不适合。