如何将字符串拆分为括号定义的部分

时间:2013-07-25 12:18:57

标签: java regex

看起来很简单,但我无法找到解决方案。我需要从像{value1}{value2}.....{valueN}这样的字符串中获取值。 我尝试将模式创建为:(\\{(.*)\\})*(\\{(.*?)\\})*。但在这两种情况下,我只得到一个值:边括号之间的所有值或最后一个值。我需要将(.*)替换为含义为anything except }{的内容 提前感谢您的帮助。

4 个答案:

答案 0 :(得分:2)

我会选择:

String str = "{value1}{value2}...{valueN}";
str = str.subString(1,str.length-2); // to crop the first and last bracket
String[] results = str.split("\\}\\{"); // to get an array of results

我不喜欢匹配正则表达式的东西,当你可以去寻找一些不那么混乱的东西。特别是对于下一个将要使用相同代码的开发人员。

答案 1 :(得分:1)

试试这个字符串模式:

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

答案 2 :(得分:0)

您应该使用ungreedy运算符(?),以便尽可能少地捕获.+ ...

{.+?}

答案 3 :(得分:0)

您应该使用更具体的匹配条件,例如可能是一个不正确的大括号而不是匹配所有......

{[^}]+}