正则表达新手问题

时间:2009-08-05 09:24:03

标签: regex

鉴于此文本

“富(BAR)”

我想使用正则表达式提取“Bar”。

帮助!

5 个答案:

答案 0 :(得分:5)

/.*\((.*)\)/

第一个。*将匹配括号之前的任何内容,第二个。*(在捕获中)将匹配括号内的任何内容并为您返回。

(我假设你的示例文本中的引号实际上并不是你想要匹配的字符串的一部分。)

答案 1 :(得分:2)

如果没有嵌套括号:

(?<=\().*?(?=\))

答案 2 :(得分:1)

只需搜索“Bar”。

例如在Groovy中:

if("Foo(Bar)" =~ /Bar/) {
    println "match"
}

将打印'匹配'

答案 3 :(得分:1)

应该足够了:

\(.*\)

在Java中,代码为:

  String foo = "Foo(Bar)";
  Pattern pattern = Pattern.compile("\(.*\)");
  Matcher matcher = pattern.matcher(foo);
  while (matcher.find()) {
            int beginIndex=matcher.start();
            int endIndex=matcher.end();
            return foo.substring(beginIndex, endIndex);

答案 4 :(得分:0)

您省略了相当多的信息:没有使用平台或语言,没有关于您收到的文本类型的指示(即“Foo”是静态的还是可以更改?“Bar”是静态的吗?等等。) / p>

选择Ruby并假设“Foo”稳定,你可以这样做:

$ ruby -e 'p "Foo(Bar)"[/Foo\(([^)]*)\)/, 1]'
"Bar"
$