正则表达式:删除第一个单词到下一行的所有内容

3
正则表达式用于从每行中删除除第一个单词以外的所有内容:
数据:
JAMES          3.318  3.318      1
JOHN           3.271  6.589      2
ROBERT         3.143  9.732      3

我正在尝试在Notepad++中进行替换操作。

正则表达式用于在字符串中查找复杂匹配,而不是用于操作它们。 - Ben
4个回答

3

您可以使用\1替换^(\s*\w+)\s+.*$,这样它将保留第一个单词并删除剩余的行。


2

使用Perl表示法:

s/^(\w+).*$/$1/

2

取决于您使用的正则表达式实现。

正则表达式^[A-Za-z_]+将捕获行上的第一个单词。因此,如果您的实现允许,您可以捕获这个第一个单词并打印它,然后就可以继续进行了。

如果您需要使用替换,您可以将^([A-Za-z_]+).* 替换为\1。例如,在vi中,您将使用命令:%s/^\([A-Za-z_]+\).*/\1/


实际上我一直在尝试在Notepad++中完成它,但似乎这些都不行。 - Alasdair
抱歉,不知道为什么没有看到那一部分。 - Alasdair

1
我知道,这篇文章已经几年了... ;) 不管怎样:
假设一个单词是由任意字符序列组成并以空格结尾:
正则表达式应该是: /\s.*/g “.”代表除换行符外的任何字符。
在vi编辑器中,你可以使用以下命令来“删除”第一个单词后面的任何内容: :%s/\s.*//g

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接