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$#
[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中定位以下內容:
<regularexp>
<regularexpression>\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</regularexpression> 正規表示式(必填)
<id>139</id> 正規表示式的編號
<type>MODIFY</type> 操作型別:CNL為取消航班,MODIFY為更改機號(必填)
<fightmode>false</fightmode> 是否為連飛: true, false(必填)
<fightnum></fightnum> 在是連飛的情況,才填寫,只能填寫2或者4(連飛為true時必填)
<multirow>false</multirow> 正則表示式是否匹配多行:true,false(必填)
<adic>1</adic> [ 1]: MF8155 航班號對應的第幾個括號(整數)
<regnum>2</regnum> [ 2]: B6483 機號對應的第幾個括號(整數)
<adic1></adic1>
第二個航班號(此為特殊處理那種兩個航班號之間隔著一些說明資訊,比如CZ6002 SVO-URC CZ6907這種格式, 一般格式上沒有,一般不填寫)
<depad1>3</depad1> [ 3]: JJN
第一個航班的起飛機場對應的第幾個括號(整數)
<etd1>4</etd1> [ 4]: 2340 第一個航班的預計起飛時間對應的第幾個括號(整數)
<arrad1>7</arrad1> [ 7]: NKG 第一個航班的降落機場對應的第幾個括號(整數)
<depad2></depad2>
<etd2></etd2>
<arrad2></arrad2>
<date>6</date> [ 6]: 26MAR 日期對應的第幾個括號(整數)(若表示式帶有日期,此項必填)
</regularexp>
四、 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
:匹配單詞邊界處的空字元
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7970627/viewspace-2682845/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 匹配A股程式碼的正規表示式
- 正規表示式匹配
- 匹配空行正規表示式程式碼
- 正規表示式的多行匹配
- 匹配手機號碼正規表示式
- 匹配身份證號碼正規表示式
- 匹配子網掩碼正規表示式
- 正規表示式匹配原理
- 字串——正規表示式匹配字串
- python 正規表示式匹配Python
- 正規表示式 多行匹配
- 匹配字母正規表示式
- leetcode - 正規表示式匹配LeetCode
- 匹配正整數正規表示式
- 匹配商品條形碼正規表示式程式碼
- 例項程式碼詳解正規表示式匹配換行
- 正規表示式匹配使用者密碼密碼
- 常用正規表示式匹配程式碼介紹
- 正規表示式教程之位置匹配詳解
- 正規表示式支配匹配模式模式
- JavaScript匹配中文正規表示式JavaScript
- 匹配護照正規表示式
- 匹配小數正規表示式
- 匹配負數正規表示式
- 匹配整數正規表示式
- 匹配自然數正規表示式
- 匹配航班號正規表示式
- 正規表示式匹配漢字
- 10. 正規表示式匹配
- 正規表示式匹配問題
- npp++常用的匹配正規表示式
- 匹配磁力連結的正規表示式
- 匹配HTML註釋的正規表示式HTML
- 匹配URL的正規表示式(推薦)
- 正規表示式同時匹配中英文及常用正規表示式
- 匹配ip-v4正規表示式程式碼
- 匹配ip-v6正規表示式程式碼
- 匹配國內座機號碼正規表示式