powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / регулярное выражение - отрицание слова
3 сообщений из 3, страница 1 из 1
регулярное выражение - отрицание слова
    #32483733
galana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно ли написать регулярное выражение для поиска по некоторым критериям подстроки, в которой НЕ ДОЛЖНО встречаться некое слово?
Т.е.: "(условие слева)(любая подстрока, не содержащая 'запрещенное слово')(условие справа)".
Решить задачу можно, последовательно находя конструкцию "(условие слева)(подстрока с запрещенным словом)", и удаляя ее, пока не очистим всю строку. Но как написать это одним рег. выражением?
...
Рейтинг: 0 / 0
регулярное выражение - отрицание слова
    #32484696
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я тоже искал, но не нашел.

а сейчас в новых vbScriptовских перлообразных регекспах нашел такую штуку - (?!14) - то есть "не 14". попробуйте и расскажите, работает или нет.

только это из области перл-совместимых регулярных выражений. а Вы может быть, не ими пользуетесь.

*** Ухожу с ПТ ***
...
Рейтинг: 0 / 0
регулярное выражение - отрицание слова
    #32485120
galana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, это называется lookahead- и lookbehind-условия.
http://www.rsdn.ru/article/alg/regular.xml#XSLTPART143120120
К сожалению, в PHP-регах они не работают.
Выкрутилась так:
1. Выбираю некий символ, которого в строке точно нет (например, '#').
Если уверенности нет, то делаю замену '#' -> 'my_secret_replace'
2. Переобозначаю запретное слово в этот символ:
'запретное слово' -> '#'
3. Теперь легко написать условие отрицания этого символа (слова): [^#].
Ищу то, что хочу.
4. Делаю обратную замену 'my_secret_replace' -> #.

$str = preg_replace("/#/","my_secret_replace", $str);
$str = preg_replace("/запретное слово/","#", $str);
preg_match ("/(условие слева)([^#]+)(условие справа)/U", $str, $arr);
$str = preg_replace("/my_secret_replace/", "#", $str);
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / регулярное выражение - отрицание слова
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]