Perl - 用正则表达式替换metacharcters

Mar*_*tiz 1 regex perl file metacharacters

我在使用正则表达式替换元字符时遇到问题.我希望正则表达式替换元字符的短语是:

ley+sobre+propiedad+literaria+1847
Run Code Online (Sandbox Code Playgroud)

我使用的代码如下:

$file =~ s/\+/\s/; # --> Replace the +

但它似乎只取代了第一个元字符,结果是:

leysobre+propiedad+literaria+1847
Run Code Online (Sandbox Code Playgroud)

我用什么?

amo*_*mon 6

  1. \s是一个字符类,不是字符串的有效转义.替换的第二部分被视为字符串.
  2. 要替换所有出现的内容("全局"),请使用/g替换上的开关.
  3. 单字符音译也可以使用tr///操作员.

假设您想要替换+空格:

tr/+/ /;
Run Code Online (Sandbox Code Playgroud)

要么

s/\+/ /g;
Run Code Online (Sandbox Code Playgroud)

如果要解码URL:

use URL::Encode 'url_decode';
my $real_filename = url_decode $file;
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅URL :: Encode文档.