首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

求正则表达式瓜分字符串的思路

2013-11-05 
求正则表达式分割字符串的思路一个字符串:str (1) P ((2)@!)期望分割成一个数组arrayarr[0] (1)arr

求正则表达式分割字符串的思路
一个字符串:str = "(1) P ((2)@!)";
期望分割成一个数组array
arr[0] = (1)
arr[1] = P
arr[2] = (2)
arr[3] = @!

请问应该如何处理?
补充 (1)是一个整体,里面可以是(3)甚至(50)等等

在线等 谢谢
  正则表达式
[解决办法]
这个就不能用正则了吧  要用栈
扫描字符串
遇到字母压栈  遇到(压栈
遇到)弹栈 看是不是(  如果不是接着弹  直到找到(
然后看栈顶是不是(  不是就弹  直到遇到(

大致思路就是这样
[解决办法]
用匹配的方式试试

public static void main(String[] args) {
String str = "(1)  P ((2)@!)";
Pattern p = Pattern.compile("(\\(\\d+\\))\\s*(\\w+)\\s*\\((\\(\\d+\\))(.+)\\)");
Matcher m = p.matcher(str);
String[] arr = null;
if(m.find()) {
 arr = new String[]{m.group(1),m.group(2),m.group(3),m.group(4) };
}
for(String s : arr) {
System.out.println(s);
}
}

[解决办法]
Pattern.compile("(\\(\\d+\\))\\s*(\\w+)\\s*\\((\\(\\d+\\))(.+)\\)");

上面的就可以 括号分组,一个个匹配。

热点排行