2010-07-16 3 views
0

Исходная строка передается как:Как я могу удалить escape-коды из строки в Perl?

FileSystems\/\1K-blocks=5036316, FileSystems\/\Available=3295944, FileSystems\/\Filesystem=/dev/cciss/c0d0p2, FileSystems\/\Use%=32% 

Что мне нужно как выход:

/ 1K-blocks=5036316,/Available=3295944,/Filesystem=/dev/cciss/c0d0p2,/Use%=32% 

но при попытке удалить «\» с регулярное выражение дает мне все виды головных болей. Я все в конечном итоге с:

Fi eSys ems/☺K-b o ks=5036316 Fi eSys ems/Avai ab e=3295944 Fi eSys ems/Fi esy 
s em=/dev/ iss/ 0d0p2 Fi eSys ems/SE%=32% 

Perl, очевидно, видит ему управления или избежать код и действительно завинчивания его.

Любые предложения были бы весьма полезными.

+0

это ваш вход utf8 данные? – IanNorton

+0

Показать ваш код, пожалуйста. – Svante

ответ

0

Эти две линии должны это сделать:

s/FileSystems\\//g; 
s/\\/ /g; 
3

Я хотел бы использовать различные разделители (кроме /), чтобы сделать регулярное выражение немного легче на глазах:

s!FileSystems\\/\\!/ !g 
-1

Использование диф. разделители сделают это намного менее запутанным.

$line =~ s!FileSystem\\/\\!/\s!g 

будет делать трюк

+0

Вы не можете использовать \ s в строке замены. – Toto

Смежные вопросы