0

我有一个看起来像这样的文件......

"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

现在,如果我运行 find 并用上述参数替换几次,它会正常工作(仅适用于 D 行)。问题是要制作的行数未知。例如...

"1234567123456","D","TEST1~TEST2~TEST3~TEST4~TEST5"
"1234567123457","D","TEST1~TEST2~TEST3"
"1234567123458","D","TEST1~TEST2"
"1234567123459","D","TEST1~TEST2~TEST3~TEST4"

我希望能够使用 MULTI 捕获组来完成这项工作。我发现这个PAGE讨论了重复捕获组和捕获重复组之间的常见错误。我需要捕获一个重复的组。出于某种原因,我只是无法让我的工作正常。还有人有想法吗?

注意:如果我可以去掉前导和尾随空格 EX: "1234567123456","D","TEST1 " 最终为 "1234567123456","D","TEST1" 会更好但不是必需的。


资源:

4

0 回答 0