如何通过正则表达式提取{}之间的值?

时间:2016-03-21 14:23:27

标签: java regex

我正在尝试使用

{ }之间提取值
"\\(\\{[^}]+\\}\\)" 

java中的正则表达式。我的意见是

String text = "Hi this is {text to be extracted}."

我希望输出为

"text to be extracted" 

但正则表达式无效。

2 个答案:

答案 0 :(得分:8)

试试这个:

"\\{([^}]*)\\}"

Online Demo

然后$1包含text to be extracted

答案 1 :(得分:3)

regexp似乎格格不入。 您需要匹配组之前和之后的额外字符,并且您不需要转义括号。 此外,您可以使用命名组来准确提取您关注的文本

这是工作代码

    String text = "Hi this is {text to be extracted}.";
    Pattern p = Pattern.compile(".*\\{(?<t>[^}]+)\\}.*");
    Matcher m = p.matcher(text);
    if (m.matches()) {
        System.out.println(m.group("t"));
    }