正则表达式查找除第一个数字之外的字符串
Regex to find string except first number
我有一个包含很多信息的大文件
939112 how is build on floor 3 63044 2022-01-17 13:23:25.891139
939113 how is build on floor 1 63044 2022-01-17 13:23:25.891139
939114 how is build on floor 2 63044 2022-01-17 13:23:25.891139
我想在 vim 上使用正则表达式删除除第一个数字以外的所有其他内容?我该怎么做。
我可以搜索所有数字并删除它们,但我想保留数字并且只在这些数字字符串之后删除。
s/^\d*//g
我期待输出
939112, 939113, 939114
或
939112
939113
939114
您可以在 vim
中使用此替换:
%s/\v^([0-9]+) .*//
解释:
\v
: 启动 vary magic mode 避免所有 (
, )
和 +
的转义
^
: 比赛开始
([0-9]+)
: 匹配捕获组 #1 中的 1+ 个数字
.*
:匹配 space 后跟任何东西
/
:替换为我们在组#1 中捕获的值
如果没有 vary 魔法,它将是:
:%s/^\([0-9]\+\) .*//
让我们看看:s/^\d*//g
有什么问题…
只适用于当前行。您需要给它一个 :help :range
才能应用于多行。假设您希望它在缓冲区中的每一行都完成,范围应该是 %
:
:%s/^\d*//g
因为你真的想对行中的第一个数字进行操作,所以 /g
修饰符(意思是“行中的所有匹配项”)是无用的,可以删除:
:%s/^\d*//
模式 ^\d*
表示“零个或多个数字,锚定到行的开头”因此该命令将行开头的每个数字替换为空,有效地删除它们......这与你想要的完全相反。您需要的是一种将您想要保留的内容与您想要删除的内容分开的方法
^\d*
足以满足 你想保留的东西 。 你要去掉的就是它后面的所有内容,可以表示为.*
:
:%s/^\d*.*//
但这会删除所有内容,您仍然需要分离它们,并且有几种方法可以使用Vim的正则表达式方言来做到这一点。
最简单的是使用:help \zs
:
:%s/^\d*\zs.*//
使用该方法,您告诉 Vim 匹配 您想要保留的内容 和 您想要删除的内容 但是仅对 要删除的内容执行替换.
我有一个包含很多信息的大文件
939112 how is build on floor 3 63044 2022-01-17 13:23:25.891139
939113 how is build on floor 1 63044 2022-01-17 13:23:25.891139
939114 how is build on floor 2 63044 2022-01-17 13:23:25.891139
我想在 vim 上使用正则表达式删除除第一个数字以外的所有其他内容?我该怎么做。 我可以搜索所有数字并删除它们,但我想保留数字并且只在这些数字字符串之后删除。
s/^\d*//g
我期待输出
939112, 939113, 939114
或
939112
939113
939114
您可以在 vim
中使用此替换:
%s/\v^([0-9]+) .*//
解释:
\v
: 启动 vary magic mode 避免所有(
,)
和+
的转义
^
: 比赛开始([0-9]+)
: 匹配捕获组 #1 中的 1+ 个数字.*
:匹配 space 后跟任何东西/
:替换为我们在组#1 中捕获的值
如果没有 vary 魔法,它将是:
:%s/^\([0-9]\+\) .*//
让我们看看:s/^\d*//g
有什么问题…
只适用于当前行。您需要给它一个
:help :range
才能应用于多行。假设您希望它在缓冲区中的每一行都完成,范围应该是%
::%s/^\d*//g
因为你真的想对行中的第一个数字进行操作,所以
/g
修饰符(意思是“行中的所有匹配项”)是无用的,可以删除::%s/^\d*//
模式
^\d*
表示“零个或多个数字,锚定到行的开头”因此该命令将行开头的每个数字替换为空,有效地删除它们......这与你想要的完全相反。您需要的是一种将您想要保留的内容与您想要删除的内容分开的方法^\d*
足以满足 你想保留的东西 。 你要去掉的就是它后面的所有内容,可以表示为.*
::%s/^\d*.*//
但这会删除所有内容,您仍然需要分离它们,并且有几种方法可以使用Vim的正则表达式方言来做到这一点。
最简单的是使用
:help \zs
::%s/^\d*\zs.*//
使用该方法,您告诉 Vim 匹配 您想要保留的内容 和 您想要删除的内容 但是仅对 要删除的内容执行替换.