Java语言中的模式

时间:2012-01-04 09:08:33

标签: java regex

我尝试从像(111,222,ttt,qwerty)这样的字符串中获取 值列表

  • 111
  • 222
  • TTT
  • QWERTY

我尝试这种模式:

String area = "(111,222,ttt,qwerty)";
    String pattern = "\\([([^,]),*]+\\)";
            Pattern p = Pattern.compile(pattern);
            Matcher m = p.matcher(area);
            System.out.println(m.groupCount());
            ArrayList<String> values = new ArrayList<String>();
            while(m.find()){
                System.out.println("group="+m.group(1));
                values.add(m.group());
            }

但我发现组数为零。我错过了什么?

4 个答案:

答案 0 :(得分:2)

假设您总是使用相同的字符串格式,您可以尝试:

String[] split = area.split("\\(|\\)|,");

答案 1 :(得分:0)

它应该是(...)+而不是[...]+(字符)。

答案 2 :(得分:0)

如果您只有包含英文字母和数字且没有空格的单词,

您可以使用以下regexp来实现此目的。

String pattern = "[a-zA-Z0-9]+";

它检查只包含数字和大写/小写英文字母的字符组。

答案 3 :(得分:0)

如果你知道只有一组括号()

String text = "aaa,bbb(111,222,ttt,qwerty),,,cc,,dd";
String[] parts = text.substring(text.indexOf('(')+1, text.indexOf(')')).split(",");
// parts = [ 111, 222, ttt, qwerty ]