Perl Regex Group捕获 - 不捕获组中的所有文本

Jam*_*unn 0 regex perl

我有这个Perl文件,我试图从xml字符串中打印某个元素,如果它有属性的话tag = "915".问题是,它不是打印出整个元素,而是打印出来915.这是文件:

print(get_marc_datafield("<datafield tag=\"915\">RandomStuff</datafield>"), "915");

sub get_marc_datafield {
    my $xml = shift;
    my $value = shift;
    my $datafield = "";
    if($xml =~ m/.*(<datafield tag="$value".*<\/datafield>).*/) {
        $datafield = $1;
    }
    return $datafield;
}
Run Code Online (Sandbox Code Playgroud)

这应该打印出来 <datafield tag="915">RandomStuff</datafield>

但相反它打印出来915.

知道我做错了什么吗?我是否正在实施群组捕获?

SzG*_*SzG 5

括号混乱.你只向函数传递了一个参数,并打印了2个东西.第二个是文字915.将两个参数传递给函数,并只打印一件事:

print get_marc_datafield("<datafield tag=\"915\">RandomStuff</datafield>", "915");
Run Code Online (Sandbox Code Playgroud)