Регулярные выражения

Раздел посвящен программированию с использованием Power Basic.
Lapex
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 64
Зарегистрирован: 25.02.2008 (Пн) 14:01

Регулярные выражения

Сообщение Lapex » 19.03.2009 (Чт) 19:24

У меня возник вопрос по поводу использования оператора "|" (OR) в REGEXPR.

Код: Выделить всё
REGEXPR "a((bc)|(b)|(x))cc" IN "abccaxcc" TO nPos&, nLen&

Почему возвращается nPos& = 5 и nLen& = 4, что соответствует "axcc"?

В справке указано, что приоритет будет слева-направо, значит по идее должно было вернуть nPos& = 1 и nLen& = 4, что соответствует "abcc".

Прошу разъяснить почему так получается.

Заранее благодарен.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Регулярные выражения

Сообщение MIT » 19.03.2009 (Чт) 19:46

Имхо, правильно строка будет выглядеть как a(bc|b|x)cc, и должно найтись именно "abcc", т.к. атомарная группировка должна возвратить первый подошедший сегмент.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Lapex
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 64
Зарегистрирован: 25.02.2008 (Пн) 14:01

Re: Регулярные выражения

Сообщение Lapex » 19.03.2009 (Чт) 19:54

Имхо, правильно строка будет выглядеть как a(bc|b|x)cc, и должно найтись именно "abcc"...

Так вообще ничего не находит.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Регулярные выражения

Сообщение MIT » 19.03.2009 (Чт) 20:05

Lapex писал(а):Так вообще ничего не находит.
Да, и правда. Там же парсер очень своеобразный. Почитай этот пост, может что понятнее станет :)
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Lapex
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 64
Зарегистрирован: 25.02.2008 (Пн) 14:01

Re: Регулярные выражения

Сообщение Lapex » 19.03.2009 (Чт) 21:13

MIT писал(а):Почитай этот пост, может что понятнее станет

Честно говоря понятнее не стало, там речь идет о том, что группы нужно брать в круглые скобки и первой нужно указывать самую длинную группу и следующие группы по убыванию длины.
Но у меня-же все соответствует, так почему пропускается 2-я группа "b"?
А вот, если в 1-й группе заменить "bc" на любое сочетание которое не встречается в строке, например "bz", то результат будет правильным "abcc". В общем не пойму, как оно работает. :(


Вернуться в Power Basic

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17

    TopList