Multiple substitutions with a single regular expression in perl

后端 未结 3 1065
心在旅途
心在旅途 2021-01-24 01:44

Say I have the following in perl:

my $string;
$string =~ s/ /\\\\ /g;
$string =~ s/\'/\\\\\'/g;
$string =~ s/`/\\\\`/g;

Can the above substitut

3条回答
  •  无人共我
    2021-01-24 02:10

    Although it's arguably easier to read the way you have it now, you can perform these substitutions at once by using a loop, or combining them in one expression:

    # loop
    $string =~ s/$_/\\$_/g foreach (' ', "'", '`');
    
    # combined
    $string =~ s/([ '`])/\\$1/g;
    

    By the way, you can make your substitutions a little easier to read by avoiding "leaning toothpick syndrome", as the various regex operators allow you to use a variety of delimiters:

    $string =~ s{ }{\\ }g;
    $string =~ s{'}{\\'}g;
    $string =~ s{`}{\\`}g;
    

提交回复
热议问题