Группы сопоставления регулярных выражений 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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