【发布时间】:2018-07-18 09:40:14
【问题描述】:
我有如下文件文本:
java-environment-common (3-1)
jdk8-openjdk (8.u172-2)
libart-lgpl (2.3.21-4)
expect (5.45.4-1)
dejagnu (1.6.1-1)
cython2 (0.28.4-1)
python2-pytz (2018.5-1)
python2-sip (4.19.8-1)
我想删除括号中的所有文本(包括括号)。
我使用%s/\(.*\)//g,但它删除了每一行。
终于,我得到了真正的答案:%s/\s\(.*\)//g!但是为什么正则表达式的结果如此不同,第二个只是去掉一个空格。
请告诉我原因,谢谢!
【问题讨论】:
-
在非非常神奇的模式下,
\(...\)创建一个捕获组。你一定在找%s/\s*(.*)//g -
\s?(.*) 这将是标准格式,但我无法帮助您为 VIM 提供它
-
@WiktorStribiżew 是的,你的答案是正确的。我对捕获组感到困惑,因为
%s/\%(.*\)//g也删除了每一行。据我所知capturing group只需将括号中的文本保存到\1。如果我的文件文本像(我删除了空格):java-environment-common(3-1)。我该怎么办?这个。 -
您的意思是要删除
(之前的空格吗?还是在行尾的(...)子字符串之前?您可以使用%s/\s*([^()]*)$//g删除~0+ 空格,然后在行尾使用(...)子字符串。 -
@WiktorStribiżew 我明白了,非常感谢。
标签: regex vim pacman-package-manager