从文件名末尾删除空格

时间:2012-01-22 15:02:24

标签: regex perl

我有一个变量如下:

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

我想删除文件扩展名中句点之前的前导空格,以便上面的示例如下所示:

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

那里可能有任何数量的空格。我可以(并且在用regexp挣扎之后)在perl中编写一个kludgy小子例程来执行此操作,但这似乎是定制的正则表达式。不幸的是,我的regexp-fu能力不足。

有人能告诉我我的方式错误并缓解我心烦意乱吗?

2 个答案:

答案 0 :(得分:5)

$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

(?=...)是一个所谓的lookahead assertion,它确定所包含的内容可以在当前位置匹配,但不会在匹配结果中包含它。

答案 1 :(得分:0)

贪婪的匹配解决方案:

s/^(.*\S)\s+\./$1./
相关问题