我需要解析飞行计划文档以提取相关信息。下面给出了一份样本文件:
(FPL-REU974-IS
-B77L/H-SDE1E2E3GFHIJ4J5M1RWXYZ/LB1D1
-LFPG1845
-N0490F310 OKASI UL612 MILPA UM730 TOP UL50 ELB UL12 VELAD UM728 NERAR UP3
RCA/N0489F350 UR611 TIKAT UG300 MAV UM665G ITLOX UM665 UVESO/N0486F370 DCT DENLI
UR780 MIDRI UR780G UVENA
-FMEE1036 FIMP
-PBN/A1D1L1S1 NAV/RNP10 DOF/121114 REG/FOLRA EET/LSAS0039 LFFF0039 LIMM0048 LIRR0111
LMMM0218 HLLL0237 HECC0343 HSSS0425 HAAA0545 HKNA0700 HCSM0701 FSSS0745 FMMM0900
SEL/CGFR ORGN/RUKOUU PER/C SRC/RQP RMK/ADSB ACARS EQUIPPED TCAS EQUIPPED)
如上图所示。飞行计划信息包含在(
和)
之间。第一行包含FPL
"关键字",飞机识别码(REU974)和航班类型(IS)(-
用作分隔符)
以下几行包含有关航班的其他信息,例如出发机场和时间(第3行,LFPG1845),航行点(第4行),到达机场和时间(第5行)等等。
我正在考虑两种方法来解析这些数据:
在后一种情况下,我会写一个词法分析器,它会返回(
,-
,/
,\n
,number
等代币, word
。这些令牌将由解析器完成,以便从飞行计划中提取相关信息。解析器还将验证输入。例如,在第一行中,飞机识别长度不超过7个字符,并且飞行类型只能包含来自给定集合的字符。
与使用正则表达式相比,上一种方法是否会过度杀伤?
考虑到我需要解析数以千计的飞行计划,这也是最有效的方法,我需要快速实现这一点。
编辑:实现语言是Java