2015-10-07 13 views
1

我試圖在字符串中的標記,其拆分正則表達式匹配: (\\w+(\\.?\\w+)*)斯普利特文本匹配其下面的正則表達式令牌: w +( w +?)*

例如:如果串是abc.com wyx-ujk:wxr.c然後

令牌1)abc.com

令牌2)wxy

令牌3)ujk

令牌4)wxr.c

,但無法做到這一點...

這裏是我的代碼:

String temp="abc.com wyx-ujk:wxr.c"; 

Pattern pattern = Pattern.compile("\\w+(\\.?\\w+)*"); 
Matcher matcher = pattern.matcher(temp); 
System.out.println(matcher.group()); 

回答

2

這種方法適用於您的測試用例:

String[] tokens = temp.split("[^\\w.]+"); 

而不是專注於你的目標,分裂它是什麼不是


一些測試代碼JDK7:

System.out.println(Arrays.toString("abc.com wyx-ujk:wxr.c".split("[^\\w.]+"))); 

輸出:

[abc.com, wyx, ujk, wxr.c] 

和JDK8:

Arrays.stream("abc.com wyx-ujk:wxr.c".split("[^\\w.]+")).forEach(System.out::println); 

輸出:

abc.com 
wyx 
ujk 
wxr.c