2016-10-03 4 views
0

У меня есть следующий текст: some unknown random stuff here: (ben, tim, sam toben, suzei)Regex чтобы соответствовать список

мне нужно использовать регулярное выражение только вытащить каждого из элементов из (неизвестно размера) разделенный запятыми список: ben, tim, sam toben, suzei в соответствующие группы. Ведущие/конечные пробелы не имеют значения.

Я пробовал следующее: (?:\(([^,]+)), но он только вытащил ben в качестве группы.

Любые идеи?

+0

Какой язык. Для этого вам, вероятно, нужно будет использовать что-то большее, чем просто регулярное выражение. Например. метод разделения или что-то в этом роде ... –

+0

@Jan - Я забыл, что существуют конкретные языковые реализации, я пометю - спасибо. – Cheetah

+0

@MadPhysicist - Мне нужно использовать регулярное выражение только, к сожалению, иначе я мог бы использовать разделение строк. – Cheetah

ответ

2

Это не то, что вы можете сделать так, как хотите, с помощью регулярных выражений только. Это, однако, можно сделать с помощью регулярных выражений и String.split().

Что-то вроде этого:

String[] getList(String text) { 
    Pattern p = Pattern.compile(".+\\((.+)\\)"); // Note the doubled backslashes 
    Matcher m = p.matcher(text); 
    if (m.find()) { 
     return m.group(1).split(","); 
    } else { 
     return new String[0]; 
    } 
} 

Demo of the regex on Regex101

Что это делает захватить содержимое скобок, а затем разделить это содержимое в массив на запятая.

+0

Вы разбиваете согласованный текст на одиночную кавычку ('), но вам нужно разбить его на запятую (,). Если нет, он вернет строку без разделения. –

+0

@ Karthi мой плохой, спасибо. –

Смежные вопросы