0

给定以下字符串:

423545(50),[7568787(50)],53654656,2021947(50),[021947],2021947(50),[8021947(50)]

我想拆分它并将内容放在一个数组中,不包括方括号和括号中的数字 - 即结果应该是一个包含以下内容的数组。

{423545,7568787,53654656,2021947,021947,2021947,8021947}

到目前为止,我的尝试只有在没有方括号的情况下才有效:

String str = "342398789, [233434],423545(50),[7568787(500)],53654656,2021947(50),[021947],2021947(150),[8021947(50)]";
String[] listItems = str.split("(\\(\\d+\\))?(?:,|$)")

如何更新上述正则表达式以提取方括号中的数字?

我试图提取的字符串是数据库行的标识符,所以我需要提取它们来检索数据库行。

4

2 回答 2

2

你可以试试这个方法

String str = "[342398789], [233434] ,423545(50),[7568787(500)],"
        + "53654656,2021947(50),[021947],2021947(150),[8021947(50)]";
String[] listItems = str.replaceFirst("^\\[", "").split(
        "(\\(\\d+\\))?\\]?(\\s*,\\s*\\[?|$)");

System.out.println(Arrays.toString(listItems));

输出

[342398789、233434、423545、7568787、53654656、2021947、021947、2021947、8021947]

于 2013-01-20T18:29:42.803 回答
1

试试这种方式:

String str = "342398789, [233434],423545(50),[7568787(500)],53654656,2021947(50),[021947],2021947(150),[8021947(50)]";
String[] listItems = str.replaceAll("\\(\\d+\\)","")replaceAll("\\[","").replaceAll("\\]","").split(",");
于 2013-01-20T18:28:46.807 回答