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