如何使用正则表达式替换括号之间的内容?

时间:2012-03-11 21:34:02

标签: regex

例如,假设我有以下字符串

“我们去了(大)动物园”

我想匹配并替换括号之间的文本,并且还要抓住一个额外的空格以结束

“我们去了动物园”

这样做的语法是什么?我似乎无法完全正确

4 个答案:

答案 0 :(得分:3)

您需要全局搜索\s*\([^)]\)\s*,用一个空格替换每个匹配项。具体如何编码取决于您使用的语言。

在Perl中它看起来像

my $s = "we went to the (big) zoo";

$s =~ s/\s*\(.*?\)\s*/ /g;

print $s;

<强>输出

we went to the zoo

答案 1 :(得分:2)

VIM中,您可以输入命令:

%s/([[:alpha:]]*)\ //g

这将在全球范围内完成所有工作(g代表全局替换,您可以将1用于intance,并且每行只执行一次)。 如果您使用的是sed,那么它就是相似的。有点像:

cat input.txt | sed s/([[:alpha:]]*)\ //g 

请注意,这里我只使用[[:alpha:]]作为字符串。如果您使用.*,则它适用于任何字符(包括数字,空格,不可打印的字符等)......

答案 2 :(得分:1)

您可以检测括号(/\(.*?*\)/)并将其删除。

你写的是哪种语言?

答案 3 :(得分:1)

通常,正则表达式看起来像这样:

/\((.*?)\)/

但正如评论所暗示的那样,语言和应用可能会影响这一点。