Forum Webscript.Ru
Программирование => Регулярные выражения => Тема начата: stanlee от 06 Января 2004, 15:54:19
-
НЕ ПОЙМУ КАК МНЕ ЗАЦЕПИТЬ С ПОМОЩЬЮ РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ ТАКУЮ ВОТ КОМПОЗИЦИЮ
ПЕРЕД КАЖДОЙ СТРОКОЙ ТАБУЛЯЦИЯ ИДЕТ
to
ПРОБОВАЛ ТАК
$result = preg_replace("/(<\\/FONT>to)/m", "ЛЯЛЯ", $result);
НЕ ПРОКАТЫВАЕТ
$result = preg_replace("/(\\n\\tto\\n)/", "ЛЯЛЯ", $result);
ТОЖЕ НЕ КАТИТ
В ЧЕМ ТРАБЛА?
-
stanlee:
В ЧЕМ ТРАБЛА?
трабла в том, что там могут быть еще и пробелы, ты не знаешь точно, сколько переводов строки и табуляций и у тебя пред каждой строкой.
Навскидку без проверки:
preg_replace("/([\\n\\t\\s]?<\\/FONT>[\\n\\t\\s]?to[\\n\\t\\s]?[\\n\\t\\s]?)/m","bla bla bla",$result);
конструкция [\\n\\t\\s]? говорит, что в этом месте могут стоять пробелы, табуляции и перевод строки в любом количестве в любом порядке...
Исправление
вместо [\\n\\t\\s]? читать [\\n\\t\\s]*
можно попробовать и просто \\s*
-
конструкция [\\n\\t\\s]? говорит, что в этом месте могут стоять пробелы, табуляции и перевод строки в любом количестве в любом порядке...
[\\n\\t\\s]*
а разве не так?
-
насчет ? стормозил, надо *
насчет замечания ondr в ЛС, что \\s заменяет \\t и \\n неуверен,
в мануале
\\s - any whitespace character,
если tab еще можно принять за подобный, то \\n неуверен.
-
Yukko
$t = " \\t\\r\\n\\f";
$t =~ s/\\s+//;
print length($t); # Результат 0
ps: А вообще в мануале так и сказано ;)
-
Уболтал, чертяка языкатый (с)Пластелин колец :)
но что-то от автора топика ни слова :) :) :) Помогают ли ему наши припарки...