[perl] Замена слова в HTML (ламо)

SCIF32

Пока накрапал такой регексп:
В строке $str заменяем слово $aaa
$str =~ s/( |\.|,|>)$aaa( |\.|,|<)/<span style=\"font-weight: bold; color: black; background-color: rgb(255,0, 0);\">$aaa<span>/g;
Смысл в том, что бы выделить слово в тексте html страницы. Ну типа как в яндексе "найденные слова".
То что я сделал не будет работать, если слово находится в начале строки, либо в конце. Как поправить регексп?

bleyman

Засунуть в первую скобку "|^" (без кавычек в последнюю - "|$". Кажется так.

artimon

А \b разве не для этого предназначен?
$str =~ s|\b$aaa\b|<span style="font-weight: bold; color: black; background-color: red;">$aaa</span>|g;

korsar0156

лучше поставь модификатор /s и тогда начало и конец строки будут только в начале и конце хтмлки где искомого слова быть не может.

SCIF32

Всем, кто ответил, спасибо! Что-то начал понимать.
Но при дальнейшем рассмотрении обнаружил, что есть еще ряд проблем:
Во-первых регексп, который я написал не совсем делает то, что нужно:
Слово то он выцепляет, но и разделители, по средствам которых он выцепляет, он сжирает. Можно ли проверять граничные условия, но что бы символы не съедались?
Во-вторых \b не катит, т.к. он заменяет даже то, что находится внутри тегов, например, если надо в тексте заменить слово title, то тег <title> тоже перекосячится.
Чего делать то с этим?

SCIF32


сэнькс а лот.
Оставить комментарий
Имя или ник:
Комментарий: