Удаление пробелов из конца имени файла - PullRequest
1 голос
/ 22 января 2012

У меня есть переменные, такие как:

$str1 = 'some random book cover  .jpg';
$str2 = 'some random cd cover .jpg';

, где я хотел бы удалить начальные пробелы перед точкой в ​​расширении файла, поэтому приведенные выше примеры должны выглядеть следующим образом:

$str1 = 'some random book cover.jpg';
$str2 = 'some random cd cover.jpg';

Там может быть любое количество пробелов. Я могу (и сделал после суеты с регулярным выражением) написать небольшую подпрограмму в perl, чтобы сделать это, но это похоже на то, что было бы специально сделано выражением регулярного выражения. К сожалению, у меня нет способностей к регулярному выражению.

Может ли кто-нибудь показать мне ошибку моих путей и облегчить мой беспокойный ум?

Ответы [ 2 ]

5 голосов
/ 22 января 2012
$subject =~ 
    s/\s+   # Match one or more spaces
    (?=     # if they are followed by
     \.     # a dot
     [^.]*  # and any number of characters except dots
     $      # up to the end of the string.
    )
    //xg;

должен сделать это, предполагая, что вы ищете любое расширение файла, а не только jpg.

(?=...) - это так называемое прогнозное утверждение который устанавливает, что вложенное может быть сопоставлено в текущей позиции, но не включает его в результат поиска.

0 голосов
/ 23 января 2012

Жадное совпадение:

s/^(.*\S)\s+\./$1./
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...