Регулярное выражение для анализа строки от конца до достижения разделителя (Perl) - PullRequest
2 голосов
/ 21 марта 2010

Мне нужно регулярное выражение для разбора текста. /home/foo/bar/hello.txt. Я хотел бы получить hello.txt и избавиться от остальной части каталога, поэтому я хотел бы удалить home / foo / bar / и получить только hello.txt

Ответы [ 3 ]

3 голосов
/ 21 марта 2010

Если вам нужно сделать что-то подобное, это означает, что вы используете неправильный подход для создания ваших URI. Вам не нужно анализировать создаваемые вами вещи, вам нужна схема для ваших URI.

Обновление: Для файлов в файловой системе используйте Файл :: Базовое имя

0 голосов
/ 21 марта 2010

Я предлагаю следующие эквивалентные регулярные выражения:

 my ($extract1) = m { ( [^/]* ) $ }x ;      

и с комментариями

 my ($extract2) = m {  
     (           # start capturing
       [^/] *    # anything other than / repeated
     )           # start capturing      
     $           # anchor to end of string  
  }x  ;

если вы добавите x в конце, то вы можете добавить пробел и комментарии, чтобы помочь объяснить регулярное выражение.

0 голосов
/ 21 марта 2010

обновление: должно работать и для путей: -)

my ($filename) = $dir =~ m!^.*/(.*)!;

или

my $filename = (split '/', $dir)[-1];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...