Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Регулярные выражения > рег.выражение как обрезать хвостик


Автор: burakov 15.1.2009, 11:59
добрый день

есть каталог $workdir = ''C:/Program Files/Abyss Web Server/htdocs/cgi-bin";
как при помощи рег. выр. сделать из него

$workdir = ''C:/Program Files/Abyss Web Server/htdocs";


т.е. обрезать хвостик 

что запутался я уже.
решил эту проблемку через массив....
а хочется попроще.....

помогите...

Автор: smartov 15.1.2009, 12:06
Код

<?php

$workdir = "C:/Program Files/Abyss Web Server/htdocs/cgi-bin";
$workdir = preg_replace('/\/[^\/]+$/U', '',$workdir);

echo $workdir;

?>

Автор: amg 15.1.2009, 12:11
Код
$workdir =~ s|/[^/]*$||;
$workdir =~ s|.(?:.(?<!/))*$||;
$workdir =~ s|(.*)/.*|$1|;


PS 1-й вариант -- то же самое, что и у smartov (успел внеред smile ) 

Автор: Loki 18.1.2009, 11:01
еще должно вот так...
Код

$workdir =~ s/\/cgi-bin$//i;

а вот как такие "хвостики" обрезать?
Код

");
", string:end))

т.е. все что до " - оставить.

Автор: nitr 18.1.2009, 13:42
Loki, способов как всегда много, вот пришло в голову
Код
s/(.+)".+$/$1/


должен удалять после последней " ;) и ковычку тоже

или немного переделав рег.выр amg
Код
s/"(.(?<!"))+$//


если ковычки оставить:
1) 
Код
s/(.+)".+$/$1/

2) 
Код
s/(.(?<!"))+$//

Автор: smartov 18.1.2009, 14:21
OMG я не заметил что это раздел Perl smile sorry

Автор: Loki 19.1.2009, 13:13
никогда не пользовался аргументами так как тут...
Код

s/(.+)".+$/$1/

и у меня это не сработало smile 

Автор: nitr 19.1.2009, 20:37
Loki, а что вы делали?
Цитата(Loki @  18.1.2009,  11:01 Найти цитируемый пост)
т.е. все что до " - оставить.

Код
#!/usr/bin/perl
my $str = 'abcd_"_abcd!" efgh;';
$str =~ s/(.+)".+$/$1/;
print $str;

про то что если хочется оставить ковычки, я написал..

Автор: tishaishii 29.1.2009, 17:55
Код
use File::Basename dirname;
print dirname 'C:/Program Files/Abyss Web Server/htdocs/cgi-bin';

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)