在 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
以防行中的列数较少。如果你有更多的列,你也应该使用字符串锚 ^
的开头来保证安全。
我正在尝试使用 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
以防行中的列数较少。如果你有更多的列,你也应该使用字符串锚 ^
的开头来保证安全。