用于在java中的大括号内获取数据的正则表达式

时间:2015-04-27 11:06:41

标签: java regex

我需要在Java中更具体地使用正确的正则表达式来获取[]之间的字符串。

字符串:

[2015-04-09 13:10:27,858] [1428599427721] [{ashwinsakthi@yahoo.com}{SpringFramework}{Host123}{58}{20150409131026660}][getfilesInput] [WebContainer : 2] 

我需要以下面的格式打印:

2015-04-09 13:10:27,858
1428599427721
ashwinsakthi@yahoo.com
etc..

尝试使用正则表达式\\[(.*?)\\],如下所示,但它无效。

Pattern p = Pattern.compile("\\[(.*?)\\]");

1 个答案:

答案 0 :(得分:1)

此代码将正确提取[]{} s中的所有值:

String str = "[2015-04-09 13:10:27,858] [1428599427721] [{ashwinsakthi@yahoo.com}{SpringFramework}{Host123}{58}{20150409131026660}][getfilesInput] [WebContainer : 2]";
String rx = "[\\[{]+([^\\]}]*?)[\\]}]+";
Pattern ptrn = Pattern.compile(rx);
Matcher m = ptrn.matcher(str);
while (m.find()) {
   System.out.println(m.group(1));
}

输出:

2015-04-09 13:10:27,858                                                                                                                                                                                                                                
1428599427721                                                                                                                                                                                                                                          
ashwinsakthi@yahoo.com                                                                                                                                                                                                                                 
SpringFramework                                                                                                                                                                                                                                        
Host123                                                                                                                                                                                                                                                
58                                                                                                                                                                                                                                                     
20150409131026660                                                                                                                                                                                                                                      
getfilesInput                                                                                                                                                                                                                                          
WebContainer : 2

修改

原始正则表达式的主要问题是它只捕获方括号内的内容(请参阅demo),而我们需要匹配花括号和方括号之间的所有内容。