SITA报文解码匹配的正则表达式

SITA 报文解码匹配的正则表达式

一、 SITA 报文

ZCZC  GRD0226 260108

QU TYNZPCA

.    

TYNTZ8X TYNZPCA

.XMNUOMF 260107

PLN 27MAR

1) MF8155 B6483 ILS(8) JJN2340(26MAR) 0120NKG

2) MF8155 B6483 ILS(8) NKG0220 0425TYN

3) MF8156 B6483 ILS(8) TYN0525 0735NKG

4) MF8156 B6483 ILS(8) NKG0900 1050JJN

SI: A/C CHG

=  

NNNN

 

二、 查询 fdoagent 的日志:

[N][FDOAGENT::HST][03-26 01:07:49]>>>Receive NetObj FDPTEL_AFTNMESSAGE FinID = 202003260010226GRD

// 收到冠字GRD/流水0226的报文

[N][FDOAGENT::HST][03-26 01:07:49]>>>[OnSITA2UpdatePlan]:: header.typestr=PLN!

// 识别为SITA格式PLN报

[N][FDOAGENT::HST][03-26 01:07:49]>>>RegularExpesstionID = 139, Modify regnum = B6483 : acid = CXA8155, executedate = 20200327, etd = 1020, depad = ZSNJ, arrad = ZBYN

// 使用139号正则表达式分组捕获提取需要的内容[N][FDOAGENT::HST][03-26 01:07:49]>>>PLN SQL:select * from PLAN_ACTIVE where ETD >= '202003270420' and ETD <= '202003271620' and DEPAD = 'ZSNJ' and ARRAD = 'ZBYN' and CALLSIGN = 'CXA8155' and VALID = 1

[N][FDOAGENT::HST][03-26 01:07:49]>>>PLN SQL:update PLAN_ACTIVE set REGNUM = 'B6483', STD='202003271020', MODIFIER = 'FAG' where ID = '202003271020CXA8155ZSNJZBYN' and VALID = 1

// 数据库查询得到计划的数据库ID:202003271020CXA8155ZSNJZBYN,update表 PLAN_ACTIVE计划。

[N][FDOAGENT::HST][03-26 01:07:49]>>>SndFDOudp:$#NOTICE$#FAG$#PLAN_ACTIVE$#U$#202003271020CXA8155ZSNJZBYN$#

//UDP 方式 通知FDO计划CXA8155有变化

[N][FDOAGENT::HST][03-26 01:07:50]>>>SQL:insert into TEL_RCV (ID, TELCSN, TELTYPE, SUBTYPE, GRADE,SNDADDR, RCVADDR, ERROR, TEXT, INDATE, ERRORREASON, ACTIVEID, ACID, ADEP, ADES, MESSAGE, SITAINFO) values (......)

// 将收到的报文写入数据库 TEL_RCV

[N][FDOAGENT::HST][03-26 01:07:50]>>>SndFDOudp:$#NOTICE$#FAG$#TEL_RCV$#I$#202003260010226GRD$#

//UDP 方式通知FDO计划报文有变化

 

三、 在regularexp.xml中定位以下内容:

   

    \b(\w{2}\d{2,4}[A-Z]?)[ ]+(\w{2,6})[ ]+ILS\(.+?\)[ ]+([A-Z]{3})(\d{4})(\((\d{2}[A-Z]{3})\))?[ ]+\d{4}([A-Z]{3})\s*[\r]?\n       正则表达式(必填)

       139       正则表达式的编号

       MODIFY  操作类型:CNL为取消航班,MODIFY为更改机号(必填)

       false  是否为连飞: true, false(必填)

         在是连飞的情况,才填写,只能填写2或者4(连飞为true时必填)

       false  正则表示式是否匹配多行:true,false(必填)

      

       1  [ 1]: MF8155 航班号对应的第几个括号(整数)

       2 [ 2]: B6483 机号对应的第几个括号(整数)

      

第二个航班号(此为特殊处理那种两个航班号之间隔着一些说明信息,比如CZ6002 SVO-URC CZ6907这种格式, 一般格式上没有,一般不填写)

       3 [ 3]: JJN

第一个航班的起飞机场对应的第几个括号(整数)

       4 [ 4]: 2340 第一个航班的预计起飞时间对应的第几个括号(整数)

       7 [ 7]: NKG 第一个航班的降落机场对应的第几个括号(整数)

      

      

      

       6 [ 6]: 26MAR 日期对应的第几个括号(整数)(若表达式带有日期,此项必填)

   

 

四、 YART 工具RegexTester.exe

——A tool to write and test regular expressions, generate VB/C# code, and compile assemblies. RegexOptions.Singleline feature added by deerchao.

设置: Results---->Report;Command-->Split然后执行Run

结果报告:

[  0]: ZCZC  GRD0226 260108

QU TYNZPCA

.    

TYNTZ8X TYNZPCA

.XMNUOMF 260107

PLN 27MAR

1)

[  1]: MF8155

[  2]: B6483

[  3]: JJN

[  4]: 2340

[  5]: (26MAR)

[  6]: 26MAR

[  7]: NKG

[  8]: 2)

[  9]: MF8155

[ 10]: B6483

[ 11]: NKG

[ 12]: 0220

[ 13]: TYN

[ 14]: 3)

[ 15]: MF8156

[ 16]: B6483

[ 17]: TYN

[ 18]: 0525

[ 19]: NKG

[ 20]: 4)

[ 21]: MF8156

[ 22]: B6483

[ 23]: NKG

[ 24]: 0900

[ 25]: JJN

[ 26]: SI: A/C CHG

=

NNNN

 

五、RegexBuddy(选择语言C#)显示的分组捕获内容(对每一条计划捕获的分组重新从1开始编号)

 

正则表达式:

\n  LF ASCII 中的 0x0A(10)

\r  CR ASCII 中的 0x0D(13)

\b :匹配单词边界处的空字符

请使用浏览器的分享功能分享到微信等