我想用每一行中的日期时间字符串替换每一行。
输入
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/