我的組可以是x/y,x.y或x_y.z格式。每個組由下劃線分隔。這些團體無序。正則表達式捕獲組
例子:
ABC/DEF_abc.def_PQR/STU_ghi_jkl.mno
我想捕捉如下:
ABC/DEF
abc.def
PQR/STU
ghi_jkl.mno
我有這樣的使用相當冗長字符串迭代和分析方法(如下圖所示),但我想知道如果做一個簡單的正則表達式可以做到這一點。
private static ArrayList<String> go(String s){
ArrayList<String> list = new ArrayList<String>();
boolean inSlash = false;
int pos = 0 ;
boolean inDot = false;
for(int i = 0 ; i < s.length(); i++){
char c = s.charAt(i);
switch (c) {
case '/':
inSlash = true;
break;
case '_':
if(inSlash){
list.add(s.substring(pos,i));
inSlash = false;
pos = i+1 ;
}
else if (inDot){
list.add(s.substring(pos,i));
inDot = false;
pos = i+1;
}
break;
case '.':
inDot = true;
break;
default:
break;
}
}
list.add(s.substring(pos));
System.out.println(list);
return list;
}
下劃線可以作爲分隔符以及作爲一個組的一部分? – 2010-12-08 12:49:42
困難似乎是在最後一組類型中(與它的下劃線)。你能否詳述一下下劃線何時應該是組的一部分,什麼時候應該是分隔符的規則?也許你可以發佈你當前的代碼。 – Jordi 2010-12-08 12:50:17
是的,這是有趣的部分:)也許某種方式來展望一個點,然後確定它是否是一個delim或組? – dogbane 2010-12-08 12:51:04