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


Автор: v2v 13.11.2008, 22:04
необходимо выбрать подстроку до первого вхождения последнего символа , напр :


Код

testStr = wewewesdsdsdwewesdsdwewesds
regexp = w(.*)s


в итоге выберется почти вся строка, без первого и последнего символов, а мне надо выбрать только подстрроку до первого вхождения s , как это сделать??






Автор: ivg 13.11.2008, 22:34
Код

w(.*?)s.*
 Где то тут уже была тема про жадность квантификаторов

Автор: v2v 14.11.2008, 09:34
неа ,
1) второго s может и не быть.
2) не работает
3) в идеале w,s это будет не по одному символу , а  последовательность.

Автор: Platon 14.11.2008, 09:52
попробуйте что-то типа.
Код

int wInd = testStr.indexOf('w');
int sInd = testStr.indexOf('s', wInd);
testStr.substring(wInd, sInd);

Автор: v2v 14.11.2008, 09:55
Platon, этот пожарный вариант о котором я знаю, и которым воспользуюсь если с регепами не получится.
но лучше всё таки регепами.

Автор: Platon 14.11.2008, 10:01
Тогда стоит сказать, почему?

Автор: v2v 14.11.2008, 10:04
пример строки:
Цитата

текст0[a="<Имя1>"]Алиас1[/a]текст1[a="<Имя2>"]Алиас2[/a]текст2[a="<Имя3>"]Алиас3[/a]текст3


Добавлено через 3 минуты и 24 секунды
* извлекать надо АлиасІ

Автор: destrd 14.11.2008, 10:13
Вам уже сказали, смотрите в сторону жадных/не жадных квантификаторо.  Если не поддерживается, смотрите свойства класса в сторону что-то типа setMinimal (как в Qt, например).

Автор: Kangaroo 14.11.2008, 10:31
Код

                String source = "текст0[a=\"<Имя1>\"]Алиас1[/a]текст1[a=\"<Имя2>\"]Алиас2[/a]текст2[a=\"<Имя3>\"]Алиас3[/a]текст3";
        Pattern pattern = Pattern.compile("\"\\](.*?)\\[/");
        Matcher matcher = pattern.matcher(source);
        
        while (matcher.find()) {
            System.out.println(matcher.group(1));
        }

Насколько криво? smile

Автор: v2v 14.11.2008, 10:42
благодарю!

Добавлено через 24 секунды
всех.

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