我有一段文本,其中包括姓名,可能是公司名称,还有地址,可能还有电子邮件地址。我想从中提取街道地址,最好是名称和地址。
这些数据是从多个来源中抽取的,所以我不知道实际的格式。它可能是这样的
Company name, owner@domain.com
ATTN John Doe
care of Company Name
123 Street St
New York, NY 12345
US
123-456-7890
但是这些线路中的任何一条都可能重新排列或丢失(电话号码可能排在第一位,没有 ATTN 或 c/o 等)。此外,这可能来自任何国家。
目标是 a) 将地址插入 Google Maps API,b) 创建一个包含尽可能多信息的联系人。
这是我的一个随机想法:
- 取任何带有电子邮件地址的行(可以使用正则表达式轻松找到),存储电子邮件地址并删除该行,不再考虑。
- 取任何带有电话号码的线路(仅限数字,和 [-+()]),存储该号码,然后从进一步考虑中删除该线路。
- 取最后三行并将它们视为街道地址 - 将它们插入谷歌地图并希望获得最好的结果。
显然,这是很多juju魔法。有更聪明的方法吗?是否有任何图书馆有很好的正则表达式来查找不同国家的街道地址?