Perl регулярное выражение помогает сопоставить любые символы, кроме конечного пробела - PullRequest
1 голос
/ 09 апреля 2011

ищет помощь Perl.Я не хорош с регулярными выражениями.Но вот в основном мне нужна помощь:

-strip out the leading blank line
-regex for any value after the directory `/foo/bar/set`, excluding trailing spaces

Ожидаемый результат:

55
proxy
test.event.done

Тестовый входной файл:

<leading blank :line here>     
/foo/bar/set/55
/foo/bar/set/proxy
/foo/bar/set/test.event.done

Код:

while(my $line=<>) {
    chomp($line);
    if ($line =~ m#foo/bar/set/(not sure what to match here) {
        print "$line\n";
    }
}

Ответы [ 3 ]

2 голосов
/ 09 апреля 2011
while (<>) {        
    if (m|^/foo/bar/set/(\S+)|) {
        print "$1\n";
    }       
}
2 голосов
/ 09 апреля 2011

Если вход является путем к каталогу и если вам нужно извлечь имя файла, вы можете использовать методы basename модуля Perl File :: Basename.

use File::Basename;
$filename = basename ($dirpath);
0 голосов
/ 09 апреля 2011

(. *) Соответствует всему в строке, и вы можете получить значение от $ 1.

используйте это для проверки своего регулярного выражения: http://regexpal.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...