2

我有一个使用 Notepad++ 或 UltraEdit 复制文件的第一列或两列并将它们添加到末尾的问题。如果我的文件有常规列,问题会很容易,但事实并非如此。这是它的样子:

18,-8 22 30.82,70 2 34.25,
19,-8 23 10,70 1 42.97,
20,-8 23 40.42,700 51.85,
21,-8 24 10.1,70 0 0.89,
22,-8 24 40.05,69 59 10.09,
...
1318,-7 27 26.82,78 3 16.1,

我希望在每行的末尾复制我的身份证号码。我尝试了替换工具,但没有找到正确的表达式来捕捉行的开头。

4

4 回答 4

1

在正则表达式搜索和替换模式下尝试以下操作:

寻找: ^([0-9]*)(.*)$

代替: \1\2\1

解释

^$分别是行首和行尾的锚点。

^([0-9]*)从行首开始匹配,直到遇到非数字(在您的情况下为逗号)。(和使匹配的 )表达式可用于替换框中的使用\1

(.*)$匹配所有其他内容,直到行尾。同样,括号使匹配的表达式可以访问,这次是通过\2.

所以,既然你想在行尾复制第一列,你可以这样做:

代替:\1\2\1

相反,如果您想第一列移到最后,您可能想要做

寻找:^([0-9]*),(.*)$

代替: \2\1

注意 find 表达式中添加的逗号。没有它,第一列数据之后的逗号将作为(.*)表达式的一部分进行匹配,因此当您的行替换为\2\1.

编辑哎呀,其他人已经打败了我(基本上)相同的答案,但我希望这个解释是有帮助的。

于 2014-07-29T13:55:34.717 回答
1

One possible solution using Notepad++

Assuming that the columns are separated by commas ,:

You can record a macro that will execute the following steps:

  • Press the Home / Pos1 key to set the caret to the first position in the current line
  • Search for , two times (or how many columns should be copied to the end of the line
  • Press Shift + Home to select the text from the beginning of the line to the possition of the caret
  • Copy the selected text by pressing Ctrl + C
  • Press End to set the caret to the end of the current line
  • Paste the copied text to the end of the line by pressing Ctrl + V
  • Move the caret to the next line by pressing (Arrow Down)

Run the macro till the end of the file is reached.

PS: Always backup your data before running the macro!

于 2014-07-29T13:38:13.063 回答
0

找什么:^([0-9]*)(.*)

用。。。来代替:\2\1

截屏

希望这对你有用。

于 2014-07-29T13:47:32.357 回答
0

在记事本++中:

打开替换对话框:搜索 -> 替换...

要将第一个字段复制到末尾:

Find what: ^([0-9]+,)(.*)$
Replace with: \1\2\1

要将第一个字段移到末尾:

Find what: ^([0-9]+,)(.*)$
Replace with: \2\1
于 2014-07-29T13:49:12.520 回答