我有一个程序生成的HTML文件,这个标签正在重复:
<table cellspacing="0" cellpadding="0" border="0" id="pt1:pt_region0:0:resId1:5:pgl3">
<table cellspacing="0" cellpadding="0" border="0" id="pt1:pt_region0:0:resId1:4:pgl3">
<table cellspacing="0" cellpadding="0" border="0" id="pt1:pt_region0:0:resId1:3:pgl3">
如何只使用正则表达式获取第一个数字(5)并忽略其他索引?
答案 0 :(得分:2)
您可能不应该使用正则表达式来解析html。看看HTML::TreeBuilder::XPath
。
use HTML::TreeBuilder::XPath;
my $tree = HTML::TreeBuilder::XPath->new_from_content(q{
<table cellspacing="0" cellpadding="0" border="0" id="pt1:pt_region0:0:resId1:5:pgl3">
<table cellspacing="0" cellpadding="0" border="0" id="pt1:pt_region0:0:resId1:4:pgl3">
<table cellspacing="0" cellpadding="0" border="0" id="pt1:pt_region0:0:resId1:3:pgl3">
});
my @id = $tree->findvalues('//table/@id');
my (@part) = split(/:/, $id[0]);
my $number = $part[4];
print("The number I'm looking for is [$number]\n");
答案 1 :(得分:0)
尝试,这是从您的问题(不太清楚)中假设您想要从标记中提取实际索引值:
$index =~ s/resId1:(\d+):pgl3/$1/g
答案 2 :(得分:0)
试试这个:
$index=~ /resId1:(\d+):pg/;
my $value = $1;
这样你就可以在标量中获得你的价值,而无需修改你的行