如何在Overpass API中反转正则匹配,查找不符合规范的ICAO代码
在Overpass-Turbo中反向匹配ICAO代码正则
在Overpass-Turbo的查询语法里,不需要修改原正则表达式,直接使用反向匹配操作符就能筛选出不符合^[A-Z]{4}$规则的ICAO代码。
核心用法
Overpass提供了!~操作符,用于实现正则的反向匹配——只要标签值不满足后续的正则表达式,就会被选中。你的原正则^[A-Z]{4}$可以直接复用,不需要调整。
示例查询语句
假设你要查找所有标注了ICAO代码但不符合规范的机场元素,完整查询如下:
[out:json][timeout:25]; // 匹配所有带icao标签但值不符合规范的机场节点、路径、关系 node["aeroway"="aerodrome"]["icao"!~"^[A-Z]{4}$"]; way["aeroway"="aerodrome"]["icao"!~"^[A-Z]{4}$"]; relation["aeroway"="aerodrome"]["icao"!~"^[A-Z]{4}$"]; out body; >; out skel qt;
关键说明
- 这个查询会筛选出所有ICAO代码长度不是4位、包含小写字母、或存在非字母字符的元素
- 如果需要匹配所有带有
icao标签的元素(不限类型),可以简化为["icao"!~"^[A-Z]{4}$"] !~是Overpass原生支持的反向正则匹配语法,无需额外修改正则本身
内容的提问来源于stack exchange,提问作者user2033412
相关产品推荐
相关产品推荐

