使用regex多个捕获组拆分字符串

使用regex多个捕获组拆分字符串,regex,capture-group,Regex,Capture Group,我有一个像这样的文件 "1234567123456","V","0","0","BLAH","BLAH","BLAH","BLAH" "1234567123456","D","TEST1 " "1234567123456","D","TEST 2~TEST3" "1234567123456","R","TEST4~TEST5" "1234567123457","V","0","0","BLAH","BLAH","BLAH","BLAH" "1234567123457","D","TEST 6"

我有一个像这样的文件

"1234567123456","V","0","0","BLAH","BLAH","BLAH","BLAH"
"1234567123456","D","TEST1 "
"1234567123456","D","TEST 2~TEST3"
"1234567123456","R","TEST4~TEST5"
"1234567123457","V","0","0","BLAH","BLAH","BLAH","BLAH"
"1234567123457","D","TEST 6"
"1234567123457","D","TEST7"
"1234567123457","R","TEST 8~TEST9~TEST,10"
我要做的就是解析D和R行。在这种情况下,~用作分隔符。所以最终的结果是

"1234567123456","V","0","0","BLAH","BLAH","BLAH","BLAH"
"1234567123456","D","TEST1 "
"1234567123456","D","TEST3"
"1234567123456","D","TEST3"
"1234567123456","R","TEST4"
"1234567123456","R","TEST5"
"1234567123457","V","0","0","BLAH","BLAH","BLAH","BLAH"
"1234567123457","D","TEST 6"
"1234567123457","D","TEST7"
"1234567123457","R","TEST 8"
"1234567123457","R","TEST9"
"1234567123457","R","TEST,10"
我在Textpad和Notepad++等应用程序上使用正则表达式。我还没有弄明白如何使用像/.+/g这样的正则表达式,因为应用程序不喜欢正斜杠。所以我不认为我可以使用全局修饰符之类的东西。我目前有以下正则表达式

//In a program like Textpad/Notepad++
<FIND> "(.{13})","D","([^~]*)~(.*)
<REPLACE> "\1","D","\2"\n"\1","D","\3
我希望能够使用一个多捕获组来完成这项工作。我发现这是关于重复捕获组和捕获重复组之间的常见错误。我需要捕获一个重复的组。由于某种原因,我只是不能使我的工作,虽然正确。还有人有主意吗

注意:如果我可以去掉前导空格和尾随空格,例如:“123456713456”、“D”、“TEST1”最后变成“123456713456”、“D”、“TEST1”,那就更好了,但不是必需的


资源:


很抱歉问这个问题,但是为什么你对上一个问题接受了错误的答案?我努力想知道该怎么做,但尽量做到公平,这是一个不同的问题,我要求@vks做的回答是正确的,他的解决方案符合我的要求。当我试图在更大范围内将其应用于我的情况时,它根本不起作用。它最终匹配了一切。就我而言,关于第一个问题,我只有一句话要说。在这个问题上有8个。当我试图改变另一个问题(这是令人满意的)时,它只是变得一团糟。最后,我只是想对vks公平一点。在文本编辑器中使用一个正则表达式是不可能的(大多数情况下都使用pcre正则表达式引擎),但如果您决定使用C#(或使用.net framework的其他语言),这是可能的,谢谢Casimir。我想这可能就是答案…:/我希望有一个逐行解决方案…另一个选择可能是使用文本编辑器的宏功能。
"1234567123456","D","TEST1~TEST2~TEST3~TEST4~TEST5"
"1234567123457","D","TEST1~TEST2~TEST3"
"1234567123458","D","TEST1~TEST2"
"1234567123459","D","TEST1~TEST2~TEST3~TEST4"