Регулярные выражения и обратный слеш

pashin

Новичок
Регулярные выражения и обратный слеш

Никак не могу составить регулярное выражение заменяющие обратный слеш повторяющийся несколько раз на "\"

Вроде все должно быть просто, но не работает зараза

Пробовал так:
PHP:
preg_replace('/\\+/','\\',$Name);
 

pashin

Новичок
Спасибо заработало, но непонятно почему 4 обратных слеша?
Первый экранирует второй, а остальные зачем?
 

kruglov

Новичок
'\\\\+' - это не "2 слеша или больше", это "1 или больше".

Сначала слеши "раскрываются" при раскрытии кавычек вокруг строки. Второй раз - при анализе регулярного выражения, где одиночный бэкслеш - тоже спецсимвол.
 

pashin

Новичок
Автор оригинала: kruglov
'\\\\+' - это не "2 слеша или больше", это "1 или больше".

Сначала слеши "раскрываются" при раскрытии кавычек вокруг строки. Второй раз - при анализе регулярного выражения, где одиночный бэкслеш - тоже спецсимвол.
Теперь понял, спасибо
А то мне казалось, что заменяться будет только четное кол-во бэкслешей
 

kruglov

Новичок
Ну, например, zz+ - это не четное количество "z", четное количество "z" - это (zz)+
 
Сверху