gpt4 book ai didi

perl - 如何最好地解析/拆分基于
标签的

转载 作者:行者123 更新时间:2023-12-01 03:38:27 26 4
gpt4 key购买 nike

我有一个包含多行地址的标签,我想将其拆分为单行,以便识别城市、邮政编码等。

例如

<div>Ministry of Magic
<br />Whitehall
<br />London
<br />SW1A 2AA
</div>

例如,我可以用 split 函数做到没有问题(假设地址 div 在变量 $text 中)
use feature 'say';
my @lines = split qr{<br\s?/>}, $text;
foreach my $line (@lines) {
say $line;
}

显示
Ministry of Magic
Whitehall
London
SW1A 2AA

但是,我很清楚 using a regex to parse HTML is verboten所以我想我会尝试使用 HTML::TreeBuilder / HTML::Element但我不确定如何获取内容。我可以对'br'标签进行look_down,但它只返回 <br />标签本身。这并不奇怪,因为 <br> element 不能包含内容,但我不知道要使用什么语法。
my $tree = HTML::TreeBuilder->new();
my @content = $tree->parse($text)->guts()->look_down(_tag => 'br');
foreach my $line (@content) {
say $line->as_HTML;
}

显示
<br />
<br />
<br />

所以,我的问题是:1)我应该坚持使用正则表达式还是使用 HTML::TreeBuilder,以及 2)如果我应该使用 HTML::TreeBuilder,我该如何提取我感兴趣的四行文本?

最佳答案

如果您的情况(并且将始终)如您所描述的那样简单,那么我会坚持使用正则表达式。在你大喊大叫并释放对我的狗之前,请想一想:

是的,正则表达式确实无法解析 HTML。但是我们这里不解析 HTML。我们正在解析 <div> 中非常非常小的 HTML 子集。 ,这可以通过简单的正则表达式轻松处理。对我来说,使用成熟的解析库就像使用大锤敲碎核桃一样。

我会亲自将您的正则表达式升级到 m!<\s*br\s*/?\s*>!捕获(稍微)损坏的 HTML,并且与任何事情一样,使用您可以组合在一起的每个有效和无效输入进行测试。

关于perl - 如何最好地解析/拆分基于 <br/> 标签的 <div>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32705282/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com