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

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";
 

Demiurg

Guest
Посмотри про разницу двойных и одинарных кавычек в php.
 

Kubiki

Новичок
Originally posted by Demiurg
Посмотри про разницу двойных и одинарных кавычек в php.
Да не в двойных кавычках дело. я прекрасно знаю что в PHP "\\" означает '\'. Дело в другом. По логике строения регулярных выражений (у которых свой синтаксис отличный от PHP), команда '\n'="\\n" должна означать переход на новую строчку (потому что '\.'="\\." означает символ точки). А этого почему то не происходит.
 

Demiurg

Guest
Похоже при передаче движку у ereg* функций происходит дополнительное экранирование. В pcre подобных проблем нет.
 
Сверху