Perl中的正则表达未初始化$ 1

时间:2015-06-23 15:40:40

标签: regex perl

我的字符串如下所示:

<File `../Path/To/My_File.gif'>

我想提取&#34; Path / To / My_File.gif&#34;。

以下是我的支票:

if ($row =~ /(?<=File `..\/).*(?=')/) {
      print "Found it!\n";
      print "$1\n";
}

我看到了#34;找到了它!&#34;打印到控制台,但也得到一个错误,说$ 1未初始化。我在这里缺少什么?

1 个答案:

答案 0 :(得分:5)

$1是第一次捕获(())捕获的值,但您的模式中没有捕获。修正:

/(?<=File `..\/)(.*)(?=')/

简化为:

m{File `../(.*)'}

更强大:

m{File `../([^']*)'}