Я пытаюсь получить из 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()); }
Но я обнаружил, что количество групп равно нулю.Что я пропустил?
Если у вас всегда один и тот же формат строки, вы можете просто попробовать:
String[] split = area.split("\\(|\\)|,");
Если вы знаете, что есть только один набор скобок ()
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 ]
Если у вас есть только слова, содержащие английские буквы и цифры без пробелов,
Вы можете использовать следующее регулярное выражение для достижения этой цели.
String pattern = "[a-zA-Z0-9]+";
Проверяет группы символов, которые содержат только цифры и прописные / строчные английские буквы.
Должно быть (...)+, а не [...]+ (символ).
(...)+
[...]+