正则表达式拆分多行 - 按 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]+)*
正则表达式详细信息:
^
: 开始
(\d+)
:匹配 1+ 个数字并在组 #1 中捕获
.*[\r\n]+
: 匹配所有内容直到行尾
(?:.*[\r\n]+)*
:匹配相同的数字和行的其余部分。重复此组 0 次或更多次
我想创建一个正则表达式,根据可以在每一行中找到的 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]+)*
正则表达式详细信息:
^
: 开始(\d+)
:匹配 1+ 个数字并在组 #1 中捕获
.*[\r\n]+
: 匹配所有内容直到行尾(?:.*[\r\n]+)*
:匹配相同的数字和行的其余部分。重复此组 0 次或更多次