我想用每一行中的日期时间字符串替换每一行。

输入

D­¬ng ThÞ Anh 19/02/1992 TH12B 10.0 5.0
La C«ng TuÊn Anh 30/01/1995 TH12A 8.5 6.5
NguyÔn §øc Anh 14/10/1995 TH12B 10.0 5.5
Ph1m Tïng Anh 10/04/1994 HTTT11 1.0 4.5

输出
19/02/1995
30/06/1995
14/11/1995
10/03/1994

我尝试使用以下命令:
:'<,'>s/[^=\d{2}\/\d{2}\/\d{4}]/ /g

但是有一点不对。

我必须改变什么才能使命令工作?

最佳答案

你不能简单地“否定”正则表达式;在某些情况下,可以编写反转模式,但这不是通用的解决方案。

相反,您必须匹配整行并捕获要保留的文本。在 :substitute 的替换部分,只引用捕获的组( \1 )。这是一个常见的模式:

%s#.*\<\(\d\+/\d\+/\d\+\)\>.*#\1#

注意:我在这里使用了 # 分隔符来避免模式中发生的 / 转义。

关于regex - Vim 正则表达式仅替换日期时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46285990/

10-13 07:23