Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Жадность квантификаторов


Автор: danilka 19.11.2010, 16:23
Хочу сделать так, чтобы квантификатор во второй группе был жаднее чем в первой
Код

public class Greedy {
    public static void main(String[] args) {
        String s = "a-b-c";

        Pattern p = Pattern.compile("(.+)-(.+)");
        Matcher m = p.matcher(s);
        if (m.find()) {
            System.out.println(m.group(1));
            System.out.println(m.group(2));
        }
    }
}

 и возвращался результат
Код

a
b-c

а не
Код

a-b
c


Чет не доходит как сделать, наверное пятница, вечер. Кто подскажет?

ЗЫ: В обеих группах обязаны быть символы так что там должны стоять плюсики...

Автор: gcc 19.11.2010, 17:05
Код

(.+)-(.*)


или
Код

(.*?)-(.*)


Код

([a-z]+)-([a-z]*)

Автор: Kircul 19.11.2010, 17:27
Жадный квантификатор жаднее чем ленивый. Может поставить вопрос так: Как сделать первую группу менее жадной? ;)
Код

(.+?)-(.+)

Автор: danilka 19.11.2010, 17:47
Цитата(Kircul @  19.11.2010,  17:27 Найти цитируемый пост)
Жадный квантификатор жаднее чем ленивый. Может поставить вопрос так: Как сделать первую группу менее жадной? ;)
Выделить всёБез подсветки
1:
    
(.+?)-(.+)


Вот она сила пятницы, тоже пробовал такой вариант но не заметил что он заработал ибо исходный код намного запутаннее приведенного, а проверял именно на нем smile

Всем спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)