Perl regular [removed]using a variable as a search string with Perl operator characters included)

后端 未结 3 718
醉酒成梦
醉酒成梦 2020-11-30 04:40
$text_to_search = \"example text with [foo] and more\";
$search_string = \"[foo]\";

if ($text_to_search =~ m/$search_string/)
    print \"wee\";

P

相关标签:
3条回答
  • 2020-11-30 04:59

    Use the quotemeta function:

    $text_to_search = "example text with [foo] and more";
    $search_string = quotemeta "[foo]";
    
    print "wee" if ($text_to_search =~ /$search_string/);
    
    0 讨论(0)
  • 2020-11-30 05:03

    You can use quotemeta (\Q \E) if your Perl is version 5.16 or later, but if below you can simply avoid using a regular expression at all.

    For example, by using the index command:

    if (index($text_to_search, $search_string) > -1) {
        print "wee";
    }
    
    0 讨论(0)
  • 2020-11-30 05:16

    Use \Q to autoescape any potentially problematic characters in your variable.

    if($text_to_search =~ m/\Q$search_string/) print "wee";
    
    0 讨论(0)
提交回复
热议问题