0
我有这个Perl文件,我试图从xml字符串打印某个元素,如果它具有属性tag = "915"
。问题是,它不打印出整个元素,而只打印出915
。 这是文件: Perl正则表达式组捕获 - 没有捕获组中的所有文本
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;
}
这应该打印出来<datafield tag="915">RandomStuff</datafield>
而是将其打印出来915
。
任何想法我做错了什么?我是否实施了不正确的组捕获?
好吧,首先,您最好用合适的HTML解析器。 – Jerry
也许,但这应该仍然很简单,我的错误可能是一个非常简单的错误。抛开HTML解析器,我的代码出了什么问题,以及我在组捕获时做错了什么? –
我对perl并不完全熟悉,但是在我看来,就像你没有将参数'915'传递给函数一样,所以'$ value'不能被正则表达式识别,因此,你只能得到'打印(“915”)或类似的东西。 – Jerry