如何解决正则表达式中的嵌套量词?

Pra*_*mar 1 regex perl grep

陷入困境

my $count=grep {/$str_check/} @arr_name ;
Run Code Online (Sandbox Code Playgroud)

什么时候

$str_check = 'C/C++'
Run Code Online (Sandbox Code Playgroud)

它抛出 Nested quantifiers in regex; marked by <-- HERE in m/'C/C++ <-- HERE '/ at acr_def_abb_use.pl line 288

我试着改成

my $count=grep {/"$str_check"/} @arr_name ;
Run Code Online (Sandbox Code Playgroud)

my $count=grep {/'$str_check'/} @arr_name ;
Run Code Online (Sandbox Code Playgroud)

但两者都没有奏效。任何人请帮我解决这个问题。

ike*_*ami 5

您需要生成与文本匹配的正则表达式模式。具体来说,你想要C/C\+\+.

my $text  = 'C/C++';
my $pat   = quotemeta($text);
my $count = grep { /$pat/ } @arr_name;
Run Code Online (Sandbox Code Playgroud)

或者

my $text  = 'C/C++';
my $count = grep { /\Q$text\E/ } @arr_name;
Run Code Online (Sandbox Code Playgroud)

\E可以省略,因为它在最后。)