Java正则表达式代码将{Item1} .Item2处理成数组或列表

时间:2011-01-19 20:38:03

标签: java regex

任何人都可以就如何使用Java RegEx进行处理提供一些建议:

{的Item1} .Item2

这样我得到一个包含

的数组或列表
  • 第1项
  • 项目2

我在考虑像RegEx一样:

   Pattern p = Pattern.compile("\\{(.+?)\\}\\.(.*?)");     
   Matcher match = p.matcher(mnemonicExpression); 
   while(match.find()) {     
    System.out.println(match.group());    
   }   

但这似乎不起作用。

非常感谢任何帮助。

亲切的问候

jcstock74

2 个答案:

答案 0 :(得分:4)

您需要获取单个匹配组1和2.使用group(),您实际上正在执行group(0),这是整个匹配。此外,最后.*?不应该是不情愿的,否则,它只匹配一个空字符串。

试试这个:

Pattern p = Pattern.compile("^\\{(.+?)\\}\\.(.*)$");
//                                \ /        \/
//                                 1          2

Matcher match = p.matcher("{Item1}.Item2");
while(match.find()) {
  System.out.println("1 = " + match.group(1));
  System.out.println("2 = " + match.group(2));
}

产生:

1 = Item1
2 = Item2

答案 1 :(得分:1)

Bonus回答:这个网页有一个非常好的正则表达式测试程序,使用java.util.regex。这是测试表达式的最佳方法,它甚至提供了您在Pattern.compile()中使用的转义java字符串:

http://www.regexplanet.com/simple/index.html