将地址编号中的每个地址与“街道类型”相匹配
Match each address from the address number to the 'street type'
我有一段包含以下地址的文本:
- 在格林伍德街900号。
- 在主街500街区
- 在670 W.镇线大道。
- 1234河大道前
- 主大道1125号。
我想将地址编号中的每个地址与"街道类型"(大道、街道、车道、道路、道路等(相匹配,但以单词开头的地址除外。
因此,对于上面的地址,该语句将匹配:
格林伍德街900号主街500街区670 W.镇线大道。1234河大道
并且不匹配:
1125主大道。
据我所知,对于这种复杂的任务,没有一个简单的正则表达式模式。要使一种模式可靠地工作,需要覆盖的变量太多。我的第一个猜测是寻找"街道"、"大道"等,但如果街道名称没有后缀(即 999 La Canada(怎么办?您可以查找"at","in"或"before"之间的任何短语,但是如果其中一个短语不是地址怎么办?明白我的意思吗?
我的建议是看看 Lingua::EN::AddressParse for Perl。
这是在满足您的请求:
(?!^of'b)^.*?('d+.*?(?:St'.|Street|Ave'.|Avenue))$
在正则表达式上看到它
(?!^of'b)
负面展望未来,行不以单词"of"开头
^
匹配行的开头,使用 m
修饰符!
.*?
匹配一切非贪婪
('d+.*?
找到第一个数字时,第一个捕获组开始(
(?:St'.|Street|Ave'.|Avenue))
非捕获组,因为?:
匹配|
之间的交替。最后一个)
关闭包含结果的捕获组。
$
匹配行尾,使用 m
修饰符!
您的结果位于第一个捕获组中。
重要的是,这是与您给定的示例一起使用的,地址可能不同,它不适用于所有类型的现有地址。
当
s = "at 900 Greenwood St.'n'
in 500 block of Main Street'n'
at 670 W. Townline Ave.'n'
before 1234 River Avenue'n'
of 1125 Main Ave."
正则表达式
/(?:^|'s)(?:(?!of'b)[a-z]+)'s*('d['s'S]*?'b(?:ave'.|avenue|st'.|street|lane|road|rd'.))/gi
因此使用
var addresses = [];
for (var match = [], re = /(?:^|'s)(?:(?!of'b)[a-z]+)'s*('d['s'S]*?'b(?:ave'.|avenue|st'.|street|lane|road|rd'.))/gi;
match = re.exec(s);) {
addresses.push(match[1]);
}
生产
["900 Greenwood St.","500 block of Main Street","670 W. Townline Ave.","1234 River Avenue"]
var addrs = create_array_of_possible_addresses();
var matching_addrs = [];
for (var i=0; i < addrs.length; i++) {
if ( addrs[i].match(/^of/) continue;
if ( addrs[i].match((/'d.*(?:St'.?|Street|Ave'.?|Avenue|Ln'.?|Rd'.?|Road))/ )
matching_addrs.push( RegExp.$1 );
}
未经测试。
相关文章:
- 谷歌图表 - 地理图表“不兼容的数据表:错误:未知地址类型
- 英国邮政编码谷歌API不返回街道地址
- 是否有JavaScript或可能的Python/Django web服务来对街道地址进行地理编码
- 从 jquery 地址选择器返回街道名称
- 地理编码器 API 仅返回街道地址
- 在地图框中查找街道地址
- 如何通过点击事件禁用智能街道/实时地址
- 将街道地址转换为坐标并在 html 中放置
- 将字符串中的 url 替换为 href 链接 - 适用于多种地址类型
- 使用谷歌地图API将纬度和经度转换为街道地址
- 我的输入类型=“文本”未正确验证我的电子邮件地址
- 谷歌地图-通过街道地址提供坐标
- Google Place自动填写地址表结合了街道编号和路线字段
- 街道地址的最佳地理编码是什么
- 如何从标记位置检索完整的街道地址(反向地理编码)
- Javascript函数 - 将地理位置代码转换为街道地址
- 如何在没有空数组的情况下从JSON结果中过滤出特定的地址类型?
- 找出字符串是街道地址、套房号码、购物中心还是其他东西
- 谷歌地图API:如何获得街道地址仅作为自动完成的结果
- 将地址编号中的每个地址与“街道类型”相匹配