Узор на языке Java - PullRequest
       1

Узор на языке Java

1 голос
/ 04 января 2012

Я пытаюсь получить из String, как (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 ]

2 голосов
/ 04 января 2012

Если у вас всегда один и тот же формат строки, вы можете просто попробовать:

String[] split = area.split("\\(|\\)|,");
0 голосов
/ 04 января 2012

Если вы знаете, что есть только один набор скобок ()

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 ]
0 голосов
/ 04 января 2012

Если у вас есть только слова, содержащие английские буквы и цифры без пробелов,

Вы можете использовать следующее регулярное выражение для достижения этой цели.

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

Проверяет группы символов, которые содержат только цифры и прописные / строчные английские буквы.

0 голосов
/ 04 января 2012

Должно быть (...)+, а не [...]+ (символ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...