我想将一些类似于name: john, id: 20, dest: toledo, from: seattle, date_time: [2/8/12 15:48:01:837 MST]
的字符串拆分为仅以下标记:
john
20
toledo
seattle
[2/8/12 15:48:01:837 MST]
我在做这个
String delims = "(name|id|dest|from|date_time)?[:,\\s]+";
String line = "name: john, id: 20, dest: toledo, from: seattle, date_time: [2/8/12 15:48:01:837 MST]";
String[] lineTokens = line.split(delims, 5);
for (String t : lineTokens)
{
// for debugging
System.out.println (t);
// other processing I want to do
}
但lineTokens中的每个偶数元素都为空或只是空白。 lineTokens中的每个奇数元素都是我想要的,即lineTokens [0]是“”,lineTokens [1]是“ john”,lineTokens [2]是“”,lineTokens [3]是“ 20”,等等。任何人都可以解释我做错了什么?
最佳答案
问题是您的正则表达式不能整体匹配, id:
,它只将,
匹配,然后将id:
匹配为第二匹配。在这两个匹配项之间,您有一个空字符串。您需要修改它以匹配整个事物。像这样:
String delims = "(, )?(name|id|dest|from|date_time)?[:\\s]+";
http://ideone.com/Qgs8y