регэксп который ищет букву л, после которой не стоит восклицательный знак

  • Автор темы Автор темы alex234
  • Дата начала Дата начала

alex234

Guest
регэксп

Мне надо написать регексп (Perl-совм.), который ищет букву л, после которой не стоит восклицательный знак. При этом мне неободимо, чтобы регексп находил букву л, после которой ничего не стоит.
Я сделал:
/л[^!]/
работает, но если после л нет никакого знака, то он не находит.
Я переделал:
/л[^!]?/
в этом случае, находит даже тогда, когда есть воскл. знак после л.
Как написать такой регэксп?
 
обрати внимание на название топика.
хинт: правила форума - самый первый топик в форуме.
 
извините, за некорректное название топика (кажется его название уже поменяли), но вопрос от этого не поменялся...
 
Georgy, будь добр, не давай больше таких ответов.
 
спасибо Demiurg'у

вопрос: вертикальная черта обозначает логическое "и"?
вообще, что она обозначает?
 
или.
но в твоем случае я бы не использовал регулярнеые выражения. Можно просто найти все буквы л, а потом смотреть, что стоит за ними.
 
но регэкспом код короче.
Объясни, почему тогда не следует их использовать?
 
короткий код - это еще не значит правильный.
while(true); - тоже очень короткий код получаестя а толку ?
Регулярные выражения - очень мощьная вещь, и использовать их там, где можно обойтись простейшим поиском - все равно, что стрелять из пушки по воробьям.
 
ну а на быстродействие это как-то отражается?
 
еще как.
Представь, что ты хочешь на самолете пролететь 100 метров (с разогревом, взлетом, посадкой и тд.)
 
Проблем - я попробовал использовать этот regexp в preg_replace, но он "съедает" букву после л. Что делать, чтобы этого не было?
 
что значит съедает ? тебе же надо, что бы он находил, вот он и находит. Tы preg_replace делаешь ?
 
Да, сейчас мне надо использовать этот регекс в preg_replace.

Проблем: заменяется не только л, но и буква, следующая за л. Как сделать, чтобы такого не было?
 
2 Demiurg:
спасибо, конечно, но работает не так как надо.

2 Sababa:
Спасибо. Работает так, как надо. Скажи что значит ?=
 
(?= ... ) - используется именно с группировкой
позитивная опережающая проверка без поглащения
в пхп правда реализована не совсем корректно, но так работает.
 
Сверху