perl正则表达式,使用m!$ regex!与

fre*_*Wer 1 regex perl

源字符串:

  1. 普通话(11亿)
  2. 印地语/乌尔都语(3.5亿)
  3. 西班牙语(3.3亿)
  4. 英语(3亿)
  5. 阿拉伯语(2亿)

试图只提取语言名称.

我目前有这个代码可行

 if($line =~ m!\s(.*)\(!)
    {
      print $1 . "\n" ;
    }
Run Code Online (Sandbox Code Playgroud)

但我试图使用quotemeta函数来做它我似乎无法做到的.

  my $regex = quotemeta( "\s(.*)\(" );
#Also tried as i suspect the \s is my problem.
  my $regex = quotemeta( "\\s(.*)\(" );


  if($line =~ m/$regex/)
    {
      print $1 . "\n" ;
    }
Run Code Online (Sandbox Code Playgroud)

任何风格都比其他风格更受欢迎吗?

eph*_*ent 6

我不明白你想要用什么quotemeta.

如果你已经有了实际的正则表达式语言,那么你想要引用它.

my $regex = qr/\s(.*)\(/;
if ($line =~ /$regex/) ...
Run Code Online (Sandbox Code Playgroud)

如果你想引用它(你想要完全匹配字符串\s(..*)\(),你不需要quotemeta明确,但这实际上是你现在正在做的.

my $str = '\s(.*)\(';
if ($line =~ /\Q$str\E/) ...
Run Code Online (Sandbox Code Playgroud)