Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Vlad_K Новенький участник форума
Зарегистрирован: 08.06.2008 Сообщения: 8
|
Добавлено: Чт Ноя 06, 2008 20:46 Заголовок сообщения: Помогите с регэкспами |
|
|
Подскажите, пожалста, как искать в тексте символы, например: - , но не показывать слова: из-за, что-то, как-то, и другие, в которых этот символ встречается, и которые заранее определенны в поисковой строке. |
|
Вернуться к началу |
|
|
Sclex Бывалый участник форума
Зарегистрирован: 24.09.2005 Сообщения: 416 Откуда: Минск
|
Добавлено: Чт Ноя 06, 2008 21:41 Заголовок сообщения: |
|
|
Текст он plain text или fb2? Редактируешь в каком редакторе? У FBE длина поля ввода для строки поиска ограничивает размер регэкспа, поэтому особо много слов не позадаешь. |
|
Вернуться к началу |
|
|
Vlad_K Новенький участник форума
Зарегистрирован: 08.06.2008 Сообщения: 8
|
Добавлено: Чт Ноя 06, 2008 22:00 Заголовок сообщения: |
|
|
О, правда, забыл сказать... В FBE редактирую. |
|
Вернуться к началу |
|
|
GribUser Автор формата FB2 - Автор библиотеки FB
Зарегистрирован: 30.09.2004 Сообщения: 2475 Откуда: Москва
|
Добавлено: Чт Ноя 06, 2008 22:17 Заголовок сообщения: |
|
|
У регэкспов худо с "отрицательным" поиском. Можно так попробовать, сурогат, но решение в принципе рабочее, самые аннойные варианты исклчит:
(?<!из|что|то|как)-(?!за|что|то)
В FBE есть функция "Слова", в которой зашита более продвинутая логика. |
|
Вернуться к началу |
|
|
Sclex Бывалый участник форума
Зарегистрирован: 24.09.2005 Сообщения: 416 Откуда: Минск
|
Добавлено: Чт Ноя 06, 2008 22:31 Заголовок сообщения: |
|
|
GribUser, там нет look-behind'а, ошибку выдает. И \b (граница слова) не работает, это в качестве пояснения, к тому, что ниже пишу.
VladK, регэксп для слова «как-то» такой:
(?!([^а-яa-z]|^)как-то)([^а-яa-z]|^)[а-яa-z]*?-
Для двух слов по идее будет так:
(?!([^а-яa-z]|^)что-то)(?!([^а-яa-z]|^)как-то)([^а-яa-z]|^)[а-яa-z]*?-
Но на практике это не поместится в строку ввода.
Захватывать такое выражение будет больше, чем один дефис, но это, я так понимаю, не страшно, ведь при автоматической замене можно с помощью backreferences подставить лишнее найденное обратно, а при ручной обработке можно отредактировать и вовсе как угодно. |
|
Вернуться к началу |
|
|
Vlad_K Новенький участник форума
Зарегистрирован: 08.06.2008 Сообщения: 8
|
Добавлено: Чт Ноя 06, 2008 22:33 Заголовок сообщения: |
|
|
У меня ошибку выдает FBE, когда эту строку задаю: (?<!из|что|то|как)-(?!за|что|то)
Немного я опоздал со своим сообщением.
Так, теперь понятно уже более-менее становится. Спасибо!
Последний раз редактировалось: Vlad_K (Чт Ноя 06, 2008 22:36), всего редактировалось 1 раз |
|
Вернуться к началу |
|
|
GribUser Автор формата FB2 - Автор библиотеки FB
Зарегистрирован: 30.09.2004 Сообщения: 2475 Откуда: Москва
|
Добавлено: Чт Ноя 06, 2008 22:36 Заголовок сообщения: |
|
|
Sclex писал(а): | GribUser, там нет look-behind' | Его нет в исходнике, в обычном режиме должен быть. |
|
Вернуться к началу |
|
|
Sclex Бывалый участник форума
Зарегистрирован: 24.09.2005 Сообщения: 416 Откуда: Минск
|
Добавлено: Чт Ноя 06, 2008 22:48 Заголовок сообщения: |
|
|
У меня в режиме «Дизайн» не работает look-behind, не знаю как у других.
Добавлено спустя 3 минуты:
Для двух слов можно короче записать:
(?!([^а-яa-z]|^)(как-то|что-то))([^а-яa-z]|^)[а-яa-z]*?- |
|
Вернуться к началу |
|
|
GribUser Автор формата FB2 - Автор библиотеки FB
Зарегистрирован: 30.09.2004 Сообщения: 2475 Откуда: Москва
|
Добавлено: Чт Ноя 06, 2008 23:08 Заголовок сообщения: |
|
|
Sclex писал(а): | У меня в режиме «Дизайн» не работает look-behind, не знаю как у других. | Ну, может и нет. Тогда в морг.
Но в данном случае фича "слова" - то, что доктор прописал. Там интерфейс сделан неочевидно был, но оно типо работать должно. |
|
Вернуться к началу |
|
|
|