正则表达式拆分多行 - 按 ID 分组

RegEx splitting multiple lines - grouped by ID

我想创建一个正则表达式,根据可以在每一行中找到的 ID 将 CSV 文件拆分为多个文件。这是一个例子:

ID,text,value
1,some text,5
1,other text,3
1,something,2
2,sample,4
3,john doe,2
3,jane doe,3
4,foo,1
4,bar,2
4,baz,3

预期的捕获组是

1,some text,5
1,other text,3
1,something,2

2,sample,4

3,john doe,2
3,jane doe,3

4,foo,1
4,bar,2
4,baz,3

更复杂的是,ID 可能会出现 1 次或多次(如上面的 2 次)。 这是我尝试过的:

^.*?\n(((\d+),.*?\n)(.*?){0,})

但它没有按预期工作。

您可以在 MULTILINE 模式下使用此正则表达式对具有相同 ID:

的各个块进行分组
^(\d+).*[\r\n]+(?:.*[\r\n]+)*

RegEx Demo

正则表达式详细信息:

  • ^: 开始
  • (\d+):匹配 1+ 个数字并在组 #1
  • 中捕获
  • .*[\r\n]+: 匹配所有内容直到行尾
  • (?:.*[\r\n]+)*:匹配相同的数字和行的其余部分。重复此组 0 次或更多次