Группы сопоставления регулярных выражений Java не совпадаютJAVA

Программисты JAVA общаются здесь
Anonymous
Группы сопоставления регулярных выражений Java не совпадают

Сообщение Anonymous »

Я хочу сопоставить разные форматы списка в текстовом файле. в основном я хотел бы сопоставить

Один, Два, Три, Четыре

или

"Один"; "Два"; "Три"; "Четыре"

И я хотел бы извлечь разделитель и кавычку. ("" и "," для первого примера и """ и ";" для второго)
Я сделал так:

Код: Выделить всё

String regexp = "(?[^\\w\\n\"']?)(? ?)(?[\"']?).*?\\k\\k";
Pattern pattern = Pattern.compile(regexp);
matcher = pattern.matcher(line);
if (matcher.matches()) {
while (matcher.find()) {
String delim = matcher.group("delim");
String quote = matcher.group("quote");
// Do stuff
}
}
Когда я использую matcher.group(), я получаю только одну группу, содержащую полную протестированную строку. matcher.group("delim") и кавычка всегда пусты. Я понимаю, что проблема связана с тем, что моя группа разделителей является необязательной, однако я также попробовал следующее регулярное выражение, которое, хотя совпадения в онлайн-тестере регулярных выражений, никогда не соответствуют ничему в моем коде:

Код: Выделить всё

String regexp = "(?[^\\w\\n\"'])(? ?)(?[\"']?).*?\\k\\k";
Что я делаю неправильно в своем регулярном выражении?

Подробнее здесь: https://stackoverflow.com/questions/407 ... esnt-match

Вернуться в «JAVA»