我有一个字符串:"stuffhere{@ name="productViewer" vars="productId={{id}}"}morestuff"
如何在开始{
和最后}
之间找到所有内容。
Pattern.compile("\\{@(.*?)\\}" + from, Pattern.DOTALL); //Finds {@ name="productViewer" vars="productId={{id}
如何验证结尾}
是否在其他}
之前或之后?字符串也可以被其他字符包围。
我希望正则表达式只返回:name="productViewer" vars="productId={{id}}"
答案 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));
}