我需要在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("\\[(.*?)\\]");
答案 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),而我们需要匹配花括号和方括号之间的所有内容。