Особенности замен в регулярных выражениях

Ноябрь

Новичок
Особенности замен в регулярных выражениях

PHP:
<?

$s='
aaaaaaaaaaaaaaaaaaaaaaaaaaaa
<sss> www www www www </sss>
bbbbbbbbbbbbbbbbbbbbbbbbbbbb
<sss> www www www www </sss>
cccccccccccccccccccccccccccc';

echo preg_replace("/[<][s]{3,3}[\s\S]+[<][\/][s]{3,3}[>]/",'здесь был sss',$s);

?>
на выходе получаем:
aaaaaaaaaaaaaaaaaaaaaaaaaaaa здесь был sss cccccccccccccccccccccccccccc
Что надо сделать, чтобы менялось только "<sss> www www www www </sss>", не задевая остальное?
 

Зека

Новичок
/<\w+>\s\w+\s\w+\s\w+\s\w+\s<\/\w+>/U

Ноябрь
либо в твоем варианте добавить /U (жадность)
 

zerkms

TDD infected
Команда форума
[<]{3,3}[\s\S]+
просто чудесная регулярка ;)
улыбнуло
 

Ноябрь

Новичок
Зека
Мы не знаем что находится между тегами, а U помогло:)

из статьи про регулярные выражения:
но как описать все символы? Просто! Надо поставить точку!
У меня точка, почему-то, описывает точку, пришлось выкрутиться:)
 

Зека

Новичок
Ноябрь
точка - это и есть точка, а не все символы...

-~{}~ 13.08.07 09:32:

Андрейка
разве точка это не точка?
 

Ноябрь

Новичок
почему так работает
PHP:
preg_replace("/<[\s]*script[\s\S]*<[\s]*\/[\s]*script[\s]*>/U",'здесь был скрипт',$s);
а так
PHP:
preg_replace("/<[\s]*script.*<[\s]*\/[\s]*script[\s]*>/U",'здесь был скрипт',$s);
нет..?
 

zerkms

TDD infected
Команда форума
WP

PHP:
<?php

var_dump(preg_match('/[.]/', 'a'));
var_dump(preg_match('/./', 'a'));

?>
выполни, дарагой ;)
 

WP

^_^
zerkms
Есть же замечательная вещь ман, вот он пусть и читает.
 
Сверху