[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Жадный квантификатор
GET
Привет, не могу сообразить...

Вот

Если после ! идет НЕ пробел, то заменить на ?
$a=preg_replace('#![^ ]#U','?',$b);


Все нормально, но вот фраза:

$b="Hello World!Test";


на выходе
$a="Hello World?est";


т.е. съедает "Т"

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
GET
Вопрос снят

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
GET
$b='Hello World_0!   Hello World_1!Test     Hello World_2!Test';
$a=preg_replace('#(![^ ])#','?',$b);
echo '<br>'.$a;


Так и не сделал, как оказалось...

//Hello World_0! Hello World_1?est Hello World_2?est


Как заставить не съедать "T"?

:)

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
rooor
?
$a=preg_replace('#!([^\s])#',"!?$1",$b);
GET
rooor

Цитата
$a=preg_replace('#!([^\s])#',"!?$1",$b);


Я так понял здесь "!?$1" восклицательный знак лишний и почему, то село пробелы:

$a=preg_replace('#!([^ ])#',"?$1",$b); //так тоже

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
rooor
а так?
$a=preg_replace('#(!([^\s]))#',"!?$2",$b);


кстати, твоя регулярка соответствует запросу))
Цитата
Если после ! идет НЕ пробел, то заменить на ?

вот она НЕ пробел и заменяет, в данном случае Т
GET
rooor

С П А С И Б О! biggrin.gif

И еще тысяча благодарностей!

Свернутый текст
user posted image


_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
GET
Блин...
$b='Hello World_0! Hello World_1!!! Test Hello World_2!Test';

$a=preg_replace('#(!([^ ]))#',"!?$1",$b);//Hello World_0! Hello World_1!?!!! Test Hello World_2!?!Test


Восклицательные знаки остаются, когда их много, а должно все заменится на вопросы, даже если они сами после себя стоят, а не только Т, вообще любой другой символ :(

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
johniek_comp
Цитата
Восклицательные знаки остаются, когда их много, а должно все заменится на вопросы, даже если они сами после себя стоят, а не только Т, вообще любой другой символ sad.gif

юзай "+" а для пробела должно быть \s

_____________
user posted image
GET
Цитата
юзай "+" а для пробела должно быть \s

johniek_comp

Мне не нужен пробельный символ, мне нужен пробел. По поводу "+" можешь показать, как юзать, код уже написан, куда вставлять?

$a=preg_replace('#(!([^ ]))#',"!?$1",$b);


_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Winston
Покажи строку которая у тебя есть и строку которую тебе нужно получить smile.gif
GET
Winston

Исходная строка: 'Hello World_0! Hello World_1!Test Hello World_2!!!!!!';

Строка на выходе: 'Hello World_0! Hello World_1?Test Hello World_2??????;

Если после "!" стоит ПРОБЕЛ, то ничего делать не надо, если НЕ ПРОБЕЛ (в том числе и другие "!"), то заменить каждый "!" на "?"

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Winston
Так?
$b='Hello World_0! Hello World_1!Test Hello World_2!!!!!!';
$a=preg_replace('#!(?! )#',"?",$b); //Hello World_0! Hello World_1?Test Hello World_2??????
GET
Winston

Просто круть!!! Вообще впервые такую конструкцию увидел ?!
user posted image
«Смотрящие вперед» утверждения ищут совпадения в строке за текущей позицией поиска и начинаются с негативных утверждений. smile.gif

Winston, спасибо еще раз, какой раз выручил, всё работает!







_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.