【发布时间】:2020-02-25 15:14:21
【问题描述】:
我需要提取前 6 个字符 (ICAO) 并将其分配给来自 ArrayList(取自 https://opensky-network.org/apidoc/rest.html)的局部变量,如下所示:
["1234a5","ABC123","Schlumpfhausen",1572255699,1572255699,8.9886,48.3756,6278.88,false,155.16,216.64,-6.18,null,6484.62,"3026",false,0
"44035c","LDM87NM ","Austria",1572430045,1572430052,9.2009,48.6891,null,true,0,163,null,null,null,"6463",false,0
.
.
.
]
需要使用java.util.regex来解决这个问题。
String icao=null;
Pattern icaoPattern = Pattern.compile("([+-]*[a-zA-Z0-9.]*)");
Matcher matcher = icaoPattern.matcher(sentence.getAircraftJson());
if(matcher.find()) {
icao=matcher.group(1);
}
结果应该是这样打印的:
ICAO: 1234a5 | Callsign: ABC123 | ...
ICAO: 44035c | Callsign: LDM87NM| ...
但我得到的只是
ICAO: | Callsign: | ...
ICAO: | Callsign: | ...
【问题讨论】:
-
解析结构语言对于正则表达式来说并不是一个很好的用例。有 JSON 库(甚至 CSV 库 - 只需删除周围的
[ brackets ]),以确保避免您可能面临的许多不同类别的问题。
标签: java regex string arraylist