Java正则表达式之间找到所有但最后一个字符没有前面或后面

时间:2013-10-11 05:18:51

标签: java regex

我有一个字符串:"stuffhere{@ name="productViewer" vars="productId={{id}}"}morestuff"

如何在开始{和最后}之间找到所有内容。

Pattern.compile("\\{@(.*?)\\}" + from, Pattern.DOTALL); //Finds {@ name="productViewer" vars="productId={{id}

如何验证结尾}是否在其他}之前或之后?字符串也可以被其他字符包围。

我希望正则表达式只返回:name="productViewer" vars="productId={{id}}"

4 个答案:

答案 0 :(得分:4)

您可以使用此模式:

\\{@(.*)(?<!\\})\\}

(?<!..)是一个负面的背后检查,检查你的情况(不在}之前)

请注意,关闭大括号不需要转义,您可以写:

\\{@(.*)(?<!})}

答案 1 :(得分:0)

试试这个:

 ^[^{]*\\{@(.*?)\\}[^}]*$

答案 2 :(得分:0)

怎么样

(?<=[{])[^{}]+

我从未使用过java,但正则表达式是国际化的不是它:)

编辑:

等等...正则表达式有错误...

答案 3 :(得分:0)

试试这个:

    String s = "stuffhere{@ name=\"productViewer\" vars=\"productId={{id}}\"}morestuff";
    Pattern p = Pattern.compile("\\{@\\s+(.*)\\}");
    Matcher m = p.matcher(s);
    if(m.find()){
        System.out.println(m.group(1));
    }