Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Perl——用正则表达式替换元字符_Regex_Perl_File_Metacharacters - Fatal编程技术网

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;
    

    有关详细信息,请参阅。

    您可以使用字符类
    [+]
    而不是
    \+
    来提高其可读性。但这只是一种偏好:)您可以通过使用字符类
    [+]
    而不是
    \+
    来提高它的可读性。但这只是一种偏好:)