символ "\n" в регулярных выражениях

  • Автор темы Автор темы Kubiki
  • Дата начала Дата начала

Kubiki

Новичок
символ "\n" в регулярных выражениях

Столкнулся с занимательной проблемой.
Оказывается символ \n воспринимается в регулярных выражениях как переход на новую строчку только если он находится в скобках "\n", а в скобках '\n' он воспринимается как буква 'n'.
Хотя по логике, если мы хотим отобразить точку (или любой другой специальный символ), то пишем "\\." или '\.' Так почему же эта логика не срабатывает для "\\n" или '\n'?

Вот простой пример:

$text =
'test1
test2
';

$find = "[^\n]*\n";
ereg($find, $text, $Match);
foreach ($Match as $key=>$value) echo "\n$value";

unset($Match);
$find = '[^\n]*\n';
ereg($find, $text, $Match);
foreach ($Match as $key=>$value) echo "\n$value";
 
Посмотри про разницу двойных и одинарных кавычек в php.
 
Originally posted by Demiurg
Посмотри про разницу двойных и одинарных кавычек в php.
Да не в двойных кавычках дело. я прекрасно знаю что в PHP "\\" означает '\'. Дело в другом. По логике строения регулярных выражений (у которых свой синтаксис отличный от PHP), команда '\n'="\\n" должна означать переход на новую строчку (потому что '\.'="\\." означает символ точки). А этого почему то не происходит.
 
Похоже при передаче движку у ereg* функций происходит дополнительное экранирование. В pcre подобных проблем нет.
 
Сверху