我是Perl语言的新手,正在尝试从MYSQL数据库转换一些数据。
我正在从两个不同的表中提取地址,我的目标是连接一个“完整”地址。在某些情况下,地址分散在每个表的列之间。
例如:
╔═══╦═════════════════════╦══════════════════════╗
║ ║ a.address_1 ║ b.address_2 ║
╠═══╬═════════════════════╬══════════════════════╣
║ 1 ║ 6418 Main St ║ Main St, Detroit MI ║
║ 2 ║ 11 S Pole Rd ║ Miami, FL 33166 ║
║ 3 ║ Pittsburgh, PA 15222║ Third Ave, Pittsburgh║
╚═══╩═════════════════════╩══════════════════════╝
我需要检查地址的任何部分是否匹配,如果是,则截断重叠部分并连接剩余的地址
╔═══╦══════════════════════════════════════╗
║ ║ address ║
╠═══╬══════════════════════════════════════╣
║ 1 ║ 6418 Main St, Detroit MI ║
║ 2 ║ 11 S Pole Rd Miami, FL 33166 ║
║ 3 ║ Fifth Avenue, Pittsburgh, PA 15222 ║
╚═══╩══════════════════════════════════════╝
这时,我要提取两个地址并将其存储,但是现在我需要将它们转换为一个“完整”地址。
有人可以帮助我解决问题吗?
谢谢
答案 0 :(得分:0)
您可以从一个正则表达式开始,该正则表达式将第一个数据条目(a.address_1
)的每个单词分成一个数组:
my ($addr_1, $addr_2) = $sth->fetchrow_array();
my @words = ($addr_1 =~ /(.*?)\s+/g);
之后,您可以遍历每个单词并将其从第二个地址中删除
for my $word (@words) {
$addr_2 =~ s/$word//g;
}
完成后,基本上可以将两个字符串合并为一个:
my $concatenated_string = $addr_1 . $addr_2;
完成后,您应该非常接近所要询问的内容。
注意:可能会出现语法错误,我已将其写在了脑海中。