|
регулярное выражение - отрицание слова
|
|||
---|---|---|---|
#18+
Возможно ли написать регулярное выражение для поиска по некоторым критериям подстроки, в которой НЕ ДОЛЖНО встречаться некое слово? Т.е.: "(условие слева)(любая подстрока, не содержащая 'запрещенное слово')(условие справа)". Решить задачу можно, последовательно находя конструкцию "(условие слева)(подстрока с запрещенным словом)", и удаляя ее, пока не очистим всю строку. Но как написать это одним рег. выражением? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2004, 09:38 |
|
регулярное выражение - отрицание слова
|
|||
---|---|---|---|
#18+
я тоже искал, но не нашел. а сейчас в новых vbScriptовских перлообразных регекспах нашел такую штуку - (?!14) - то есть "не 14". попробуйте и расскажите, работает или нет. только это из области перл-совместимых регулярных выражений. а Вы может быть, не ими пользуетесь. *** Ухожу с ПТ *** ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2004, 16:38 |
|
регулярное выражение - отрицание слова
|
|||
---|---|---|---|
#18+
Спасибо, это называется 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); ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2004, 21:16 |
|
|
start [/forum/topic.php?fid=23&fpage=513&tid=1479843]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 153ms |
0 / 0 |