$ 1不包含值

use*_*785 1 regex perl

我正在编写一个脚本,它使用正则表达式从文本文件中识别和提取各种不同格式的年份.这是有问题的代码:

if ($parts[0] =~ /^\(*(\d\d\d\d)\)*$/) {
    # Matches a single 4 digit date in parentheses such as (1979)
    $start = $1;
    $end = $1;
} 
elsif ($parts[0] =~ m{\d\d\d\d\/\d\d\d\d} ) {
    # Matches cases like 1948/1972
    warn "Found a $1";
    #do some other stuff
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是它找到与表达式匹配的日期elsif,但$1不保存值,"Found a "反复打印出一条消息,但没有值$1.谁能让我知道我在这里做错了什么?如果这是一个愚蠢的错误,我道歉.

谢谢!

yst*_*sth 5

首先,启用警告.

它没有设置,$1因为你没有捕获m{\d\d\d\d\/\d\d\d\d}正则表达式中的任何内容.也许你的意思是做什么m{(\d\d\d\d/\d\d\d\d)}