如何使用正则表达式替换圆括号之间的内容?
问题描述:
例如,假设我有以下字符串如何使用正则表达式替换圆括号之间的内容?
“我们去(大)动物园”
我想匹配,更换括号之间的文本,也搭上了多余的空格之一与
落得“我们去动物园”
什么语法来做到这一点?我似乎无法完全理解
答
您需要全局搜索\s*\([^)]\)\s*
用一个空格替换每个出现的位置。具体的编码方式取决于你使用的是什么语言。
在Perl它看起来像
my $s = "we went to the (big) zoo";
$s =~ s/\s*\(.*?\)\s*/ /g;
print $s;
输出
we went to the zoo
答
您可以检测括号(/\(.*?*\)/
)并将其删除。
哪些是您写的语言?
+0
'[^)]'会比'。*?更有效率' – 2012-03-11 21:44:07
答
一般来说,正则表达式将是这个样子:
/\((.*?)\)/
但作为评论暗示,语言和应用程序可能会影响到这一点。
答
在VIM
你可以输入命令:
%s/([[:alpha:]]*)\ //g
这将做到这一切全局(g
代表全局替换,就可以把1
为intance,它会每行做一次)。 如果您使用的是sed
,那么它是相似的。在这里我想只有字符的字符串使用[[:alpha:]]
cat input.txt | sed s/([[:alpha:]]*)\ //g
注:沿着线的东西。如果您使用.*
,那么它将适用于任何字符(包括数字,空格,不可打印的字符等)...
那你试试? – 2012-03-11 21:36:14
您使用哪种语言? – 2012-03-11 21:36:16