任何人都可以就如何使用Java RegEx进行处理提供一些建议:
{的Item1} .Item2
这样我得到一个包含
的数组或列表我在考虑像RegEx一样:
Pattern p = Pattern.compile("\\{(.+?)\\}\\.(.*?)");
Matcher match = p.matcher(mnemonicExpression);
while(match.find()) {
System.out.println(match.group());
}
但这似乎不起作用。
非常感谢任何帮助。
亲切的问候
jcstock74
答案 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字符串: