我之前没有使用过perl regex,并且正在努力仅从某些html中提取第一次出现的内容。 有关的html如下:
webview
我正在尝试仅提取MK6174的第一个匹配项。
我想出的当前正则表达式是
preload
(我还有许多其他型号,长度超过6个字符,全都是字母数字。(其中一些包含上面的特殊字符)
根据我的研究,我知道我需要以某种方式使用*。或。+?使其不贪心,但我找不到正确的放置位置?
我发现如果将其放在末尾,则没有任何区别,并且它之间的任何地方都以0结尾。
我还尝试在末尾添加/ g,以查看是否可行并且产生零结果。
此外,我需要使其完全在一个正则表达式中起作用,因为当我输入一个正则表达式来过滤型号html代码时(直到结束td时),我用来执行此操作的程序不起作用标签),然后使用上面的正则表达式将MK6174拉出。
该如何解决?
编辑:我忘了提到我当前的正则表达式,我的输出结果是“ MK6174MK6174”
答案 0 :(得分:1)
使用CSS选择与型号td
相邻的th
:
use Web::Query::LibXML 'wq';
my $html = '<tr><th class="a-span5 a-size-base">Model number</th><td class="a-span7 a-size-base">MK6174</td></tr><tr><th class="a-span5 a-size-base">Part Number</th><td class="a-span7 a-size-base">MK6174</td></tr>';
print wq($html)->find('th:contains("Model number") + td')->text;
__END__
MK6174