1

我有一个 CSV 文件(从 iWork Numbers 导出的数据),其中包含带有信息的用户列表。我想要做的是在所有行上替换;;;;;;;;;;接受“上次登录”。

通过这样做并将文件再次导入 Numbers,数据将(希望)分成如下行:

User 1 | Points: 1 | Registered: 2012-01-01 | Last login 2012-02-02
User 2 | Points: 2 | Registered: 2012-01-01 | Last login 2012-02-02

CSV 文件的外观:

;User1;;;;;;;;;
;Points: 1;;;;;;;;;
;Registered: 2012-01-01;;;;;;;;;
;Last login: 2012-02-02;;;;;;;;;
;User2;;;;;;;;;
;Points: 2;;;;;;;;;
;Registered: 2012-01-01;;;;;;;;;
;Last login: 2012-02-02;;;;;;;;;

所以我的问题是我应该在查找和替换字段中输入什么正则表达式代码?

提前致谢!

4

1 回答 1

2

查看正则表达式的实际操作

Find   : ^(;(?!Last).*)(;{9})
Replace: $1;

输出将是:

;User1;
;Points: 1;
;Registered: 2012-01-01;
;Last login: 2012-02-02;;;;;;;;;
;User2;
;Points: 2;
;Registered: 2012-01-01;
;Last login: 2012-02-02;;;;;;;;;

解释

寻找:

^                 # Match start of the line
(                 # Start of the 1st capture group
    ;(?!Last)     # Match a semicolon (;), only if not followed by 'Last' word.
    .*            # Match everything
)                 # End of the 1st capture group
(                 # Start of the 2nd capture group
    ;{9}          # Match exactly 9 semicolons
)                 # End of the 2nd capture group

代替:

$1;               # Leave 1st capture group as is and append a semicolon.
于 2012-08-24T09:06:26.777 回答