在 Notepad++ 中使用正则表达式替换更改 csv 文件条目的顺序

Changing order of csv-file entries with regex replacement in Notepad++

我正在尝试使用 Notepad++ 内置 find/replace 函数更改 *.csv 文件条目的顺序。这是文件现在的样子:

ABC;DEF;Here comes some long text with ,.- in it;true;false;
QWE;RTY;Here comes some long text with ,.- in it;true;false;

这是 find/replace:

之后的样子
DEF;Here comes some long text with ,.- in it;ABC;true;false;;
RTY;Here comes some long text with ,.- in it;QWE;true;false;;

所以#1 列应该在#3 的位置,#2 和#3 列应该向左移动一位。

到目前为止我尝试了什么:

我试图在查找字段中使用正则表达式获取前三列,在它们周围放置一些括号,并在替换字段中使用 $ 符号重新排序。 但我的正则表达式几乎匹配整行,而不仅仅是前三列 - 我做错了什么?这是我的正则表达式:

([A-Z]{3})\;([A-Z]{3})\;(.*[^\;])\;

前两列和后面的;是select正常的,问题一定在第三个圆括号。但我不知道问题出在哪里。第三个表达式应匹配除 ; 以外的所有内容,并以 ;.

结尾

替换字段的内容应该是;;;,我猜是对的

主要问题是您不必要地转义了分号。使用此表达式 ^(?s)([A-Z]{3};)([A-Z]{3};)([^\n\r;]*;) 并将其替换为此表达式 </code></p> <p>包含行分隔符 <code>\r\n 以防行中的列数较少。如果你有更多的列,你也应该使用字符串锚 ^ 的开头来保证安全。