我一直在尝试从文件中提取这些数据,但问题是,在我遇到困难的时候,可能会有一个全新的模式(以日期开头),或者可能有一个补充在路线中(不以数字开头)。
我无法确定下一个数字是新模式还是补充数字。我也无法优化此模式,因为您可以在EQPT标记后看到。
要匹配的字符串示例:
291011 311011 1234560 AZU4059 E190/M SBKP1513 N0458 350 DCT BGC DCT TRIVI DCT CNF UW58 SBRF0249 EQPT/WRG PBN/D1O1 EET/SBRE0107 SAGAZ/N0454F370 UW58 GEBIT UW10
271011 UFN 1230060 AZU4062 E190/M SBPA2140 N0460 350 UM540 OSAMU DCT NEGUS UW47 SBKP0120 EQPT/WRG PBN/D1O1 EET/SBBS0106
到目前为止我的正则表达式:
preg_match_all('/([0-3][0-9][0|1][0-9][0-9]{2})\s*(UFN|[0-3][0-9][0|1][0-9][0-9]{2})\s*([0-7]{7})\s*(AZU[0-9]{4})\s*([A-Z0-9]{4})\/([L|M|H])\s*([A-Z0-9]{8})\s*(N[0-9]{4})\s*([0-9]{3})\s*([\S\s]{1,40})\s*([A-Z0-9]{8})\s*(EQPT\/WR?G?\s?P?B?N?\/?D?1?O?1?\s?E?E?T?\/?([A-Z0-9]{8})?)\s*)/', $result, $match);
答案 0 :(得分:0)
我明白了!
我必须做很多事情来完成这项工作:
我删除了所有空白的双空格,并用“######”替换了所有第一个子模式日期。我还用“UFN”替换了第二个参数,并用几个数组映射了我替换的参数。
然后我在最后添加了一个#并在正则表达式模式的末尾使用它,这样就可以确定它在#时会出现一个新的模式。一切顺利,我只需要重新定位路线的其余部分,以便与另一条路线相辅相成。
感谢您的帮助!