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

振星 2013-11-04 10:51:37
一个字符串:str = "(1) P ((2)@!)";
期望分割成一个数组array
arr[0] = (1)
arr[1] = P
arr[2] = (2)
arr[3] = @!

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

在线等 谢谢
...全文
162 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
末日哥 2013-11-04
  • 打赏
  • 举报
回复
用匹配的方式试试
	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);
		}
	}
sunbo624 2013-11-04
  • 打赏
  • 举报
回复
这个就不能用正则了吧 要用栈 扫描字符串 遇到字母压栈 遇到(压栈 遇到)弹栈 看是不是( 如果不是接着弹 直到找到( 然后看栈顶是不是( 不是就弹 直到遇到( 大致思路就是这样
tony4geek 2013-11-04
  • 打赏
  • 举报
回复
Pattern.compile("(\\(\\d+\\))\\s*(\\w+)\\s*\\((\\(\\d+\\))(.+)\\)"); 上面的就可以 括号分组,一个个匹配。

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧