![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
w1nd |
|
||||||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Абсолютно уверен. Проверял.
Предельно ясна. Выражение "\\QAB\\E" как раз и обозначает последовательность "AB". Код примера:
Вывод (java 1.5.0_01):
Это сообщение отредактировал(а) w1nd - 1.3.2007, 00:18 -------------------- ![]() ![]() |
||||||
|
|||||||
nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Странно... У меня твой пример даёт такой вот результат:
Проверял на jdk6.0 Добавлено @ 01:57 По идее, внутри [] по правилам регулярных выражений указывается символьный класс, соответствующий одному символу. Не представляю, как у тебя твой пример смог обработать символьный класс как последовательность... -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
corpsehunter |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 24.2.2007 Репутация: нет Всего: 3 |
Ничего странного, у меня такой же ![]() Вообще, выражение [^\\QAB\\E] значит любой из символов, кроме \ Q A B \ E ![]() ![]() ![]() --------------------
Тест на IQ показал отрицательный результат... |
|||
|
||||
nornad |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Конечно. Скомпилирую в жабе простейший исходник:
И посмотри, что тебе скажет жаба. ;) Добавлено @ 04:42 corpsehunter, кстати, я не совсем понял, что ты хотел сказать словами
Это ты мне объяснял или w1nd'у? \QAB\E - любая последовательность не АВ [\QAB\E] - любой один символ, кроме А и В. А мои слова относились к тому, что я не понимаю, каким образом на jdk1.5.0_01 это дело работало не как символьный класс, а как последовательность. Добавлено @ 04:45 Всё, дошло, что ты имел в виду. ![]() Если ты заметил, в коде [^\\QAB\\E] взято в кавычки. ![]() -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
||||
|
|||||
w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Да, с символьным типом я обмишурился. Значит в пятёрке баг в реализации regexp... -------------------- ![]() ![]() |
|||
|
||||
corpsehunter |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 24.2.2007 Репутация: нет Всего: 3 |
Т.е. это тоже самое, что и [^A][^B]?
А это - [^AB]? Просто в первом примере стоял двойной бэкслэш, а это в регулярном выражении значит одинарный слэш, а тут ты уже поставил одинарный ![]() Да и вообще, я раньше не слышал про \Q...\E, шаз прочитал в доке - там написано, что все, что заключено в них просто экранируется бэкслэшем. Че-то несостыковочка какая-то... --------------------
Тест на IQ показал отрицательный результат... |
||||
|
|||||
_program_seeker |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 28.2.2007 Репутация: нет Всего: нет |
w1nd, спасибо, твой пример я проверил на свежую голову и действительно все работает! я немного изменил только твою программу, и добавил пару тестовых строк, и вот что получилось:
программа (jdk_1.5.0_8):
я добавил переменную t для того чтобы можно было обрамлять строки теста дополнительными незначащими символами, для чего это сделано - будет видно чуть позже. Вначале я провел тест при значении переменной t = "", и вот результаты:
на этом наборе тестов паттерн, предложенный w1nd, работает превосходно. а вот когда я провел тесты но при значении переменной t = "oo" то получил результаты которые не поддаются логике:
почему так? ведь паттерн не ограничивается строкой, в нем нет начального ^ и завершающего $ символа? Это сообщение отредактировал(а) _program_seeker - 1.3.2007, 17:50 |
||||||
|
|||||||
nornad |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Нет. [^A][^B] - два последовательных символа, но первый не А, а второй не В. \QAB\E - последовательность любой величины, лишь бы это не была последовательность АВ.
Да.
Потому что String.matches работает не совсем так, как обычный паттерн-матчинг. Часто он считает, что твой шаблон должен подходить именно для всей строки. Я бы сказал, что это всегда так, но сам пару раз столкнулся с необходимостью явно указать ^$. Кстати, раз уж ты пишешь в пятой жабе, то учти, что этот же код в шестой жабе уже будет работать иначе. О причине читай выше. Добавлено @ 18:06 Хотя, насчёт \QAB\E могу ошибаться - мало сталкивался. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
||||
|
|||||
corpsehunter |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 24.2.2007 Репутация: нет Всего: 3 |
У меня в первом случае все равно не так получается. Во втором так же. Версия 1.6.0
И вообще, не понимаю, почему у тебя так получается и откуда взяли, что \Q…\E обозначает последовательность:
P.S. Со количеством слэшэй я накосячил - перепутал с пхп - там используется одиночный... --------------------
Тест на IQ показал отрицательный результат... |
|||
|
||||
nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Спасибо, что напомнил. Итого получаем, что \QАВ\E === АВ, а [^\QАВ\E] === [^АВ].
-------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
sova7 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 2.3.2007 Где: Санкт-Петербург Репутация: нет Всего: нет |
Насчет поиска фраз "без слова водка" - так понял, решение не найдено ?
Из решений обратной задачи для "ABooAooBooAB" можно предложить
Это сообщение отредактировал(а) sova7 - 2.3.2007, 12:13 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |