Regex Perl——用正则表达式替换元字符
我在使用正则表达式替换元字符时遇到问题。 短语“我希望正则表达式替换元字符”是:Regex Perl——用正则表达式替换元字符,regex,perl,file,metacharacters,Regex,Perl,File,Metacharacters,我在使用正则表达式替换元字符时遇到问题。 短语“我希望正则表达式替换元字符”是: ley+sobre+propiedad+literaria+1847 我使用的代码如下: $file=~s/\+/\s/#-->更换+ 但它似乎只替换了第一个元字符,结果是: leysobre+propiedad+literaria+1847 我应该使用什么?使用s/\+//g全局替换 使用s/\+//g全局替换 您的问题与元字符无关。除非/g选项要求替换所有模式,否则替换s///仅替换第一次出现的模式 顺便说
ley+sobre+propiedad+literaria+1847
我使用的代码如下:
$file=~s/\+/\s/#-->更换+
但它似乎只替换了第一个元字符,结果是:
leysobre+propiedad+literaria+1847
我应该使用什么?使用
s/\+//g
全局替换 使用s/\+//g
全局替换 您的问题与元字符无关。除非/g
选项要求替换所有模式,否则替换s///
仅替换第一次出现的模式
顺便说一句,\s
在更换零件中被解释为普通的s
。如果需要\s
,则必须指定\\s
以反斜杠(如双引号中所示)。因此,输出实际上是
leyssobre+propiedad+literaria+1847
请注意,双
s
您的问题与元字符无关。除非/g
选项要求替换所有模式,否则替换s///
仅替换第一次出现的模式
顺便说一句,\s
在更换零件中被解释为普通的s
。如果需要\s
,则必须指定\\s
以反斜杠(如双引号中所示)。因此,输出实际上是
leyssobre+propiedad+literaria+1847
注意双s
\s
是字符类,不是字符串的有效转义。替换的第二部分作为字符串/g
开关tr//
运算符+
:
tr/+/ /;
或
如果要解码URL:
use URL::Encode 'url_decode';
my $real_filename = url_decode $file;
有关更多信息,请参阅
\s
是字符类,不是字符串的有效转义。替换的第二部分作为字符串/g
开关tr//
运算符+
:
tr/+/ /;
或
如果要解码URL:
use URL::Encode 'url_decode';
my $real_filename = url_decode $file;
有关详细信息,请参阅。您可以使用字符类
[+]
而不是\+
来提高其可读性。但这只是一种偏好:)您可以通过使用字符类[+]
而不是\+
来提高它的可读性。但这只是一种偏好:)