![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| _Y_ |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
Я в регулярных выражениях не силен. Собственно, впервые попалась задача для их использования. Подскажите.
Можно ли такое записать регулярным выражением, а если нельзя, то какими кусками делать лучше следующий поиск: 1) Простейший вариант: Надо найти строку key в строке string. Разрешено несовпадение одной буквы любой (кроме крайних естественно). Несовпадение может представлено как различием букв в key и string (например aBc и aDc), так и отсутствием буквы в одной из строк (например ac и aDc или aBc и ac). 2) Сложнее: Ищется не фиксированная строка key, а как можно более длинная строка из начала сытроки keysString. Вожножно или делать циклом
3) Еще сложнее key бетется не только от самого начала keysString, а несколько первых букв может быть пропущено. Но это уж, видимо, только циклом.
Спасибо Это сообщение отредактировал(а) _Y_ - 11.2.2008, 19:02 -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
||||
|
|||||
| nornad |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Не до конца понял суть, но попробую:
\w - это символ слова Сложнее, если у тебя в слове не три, а более букв, но и тут можно вывернуться. Просто, выглядеть правильная регулярка будет тем хуже, чем больше букв в слове.
Совсем не понял. Ну и 3, тоже из-за этого непонятно. Добавлено через 30 секунд Если приведёшь примеры - будет скорее всего проще понять. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
||||
|
|||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
Ключ может быть длиной от четырех до 22 символов. Примеры:
1) ключ aBcDe должен быть найден и в ...aBcDe..., и в ...acDe..., и в ...aBce..., и в ...aBcBe..., и в ...aBcDDe.... 2) имеется ключевая строка abcde, которая ищется по правилу (1). Если не находится, ищется abcd, потом abcd.... Вообще-то составляя второй пример я заподозрил, что регулярные выражения меня не спасут, т.к. помимо позиции первого вхождения мне надо будет еще и получить информацию о том, какая собственно строка найдена. Так что, видимо, вопрос мой должен ограничиться пунктом (1). Да, к нему надо бы добавить еще и вопрос как такое регулярное выражение собрать автоматически и чем заменить indexOf, т.к. он вроде регулярные выражения не берет? Это сообщение отредактировал(а) _Y_ - 11.2.2008, 19:57 -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Первая задача с помощью регулярок будет решаться довольно плохо. Можно, но и само выражение будет громоздким и непонятным, и работать это будет медленно. Ну и следующие задачи, естественно, тоже нормально не проходят.
А для чего это нужно, если не секрет? Может, есть принципиально иное решение? Добавлено через 5 минут и 56 секунд
С помощью рег.выражений можно получить как строки, так и позиции вхождения (если я, правда, не путаю с php -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |