溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何實(shí)現(xiàn)SITA報(bào)文解碼匹配的正則表達(dá)式

發(fā)布時(shí)間:2021-12-29 16:23:47 來源:億速云 閱讀:349 作者:小新 欄目:大數(shù)據(jù)

小編給大家分享一下如何實(shí)現(xiàn)SITA報(bào)文解碼匹配的正則表達(dá)式,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

SITA報(bào)文解碼匹配的正則表達(dá)式

一、SITA報(bào)文

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的報(bào)文

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

//識(shí)別為SITA格式PLN報(bào)

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

//使用139號(hào)正則表達(dá)式分組捕獲提取需要的內(nèi)容[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

//數(shù)據(jù)庫查詢得到計(jì)劃的數(shù)據(jù)庫ID:202003271020CXA8155ZSNJZBYN,update表 PLAN_ACTIVE計(jì)劃。

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

//UDP方式 通知FDO計(jì)劃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 (......)

//將收到的報(bào)文寫入數(shù)據(jù)庫 TEL_RCV

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

//UDP方式通知FDO計(jì)劃報(bào)文有變化

三、在regularexp.xml中定位以下內(nèi)容:

    <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>       正則表達(dá)式(必填)

       <id>139</id>       正則表達(dá)式的編號(hào)

       <type>MODIFY</type>  操作類型:CNL為取消航班,MODIFY為更改機(jī)號(hào)(必填)

       <fightmode>false</fightmode>  是否為連飛: true, false(必填)

       <fightnum></fightnum>  在是連飛的情況,才填寫,只能填寫2或者4(連飛為true時(shí)必填)

       <multirow>false</multirow>  正則表示式是否匹配多行:true,false(必填)

       <adic>1</adic>  [ 1]: MF8155航班號(hào)對(duì)應(yīng)的第幾個(gè)括號(hào)(整數(shù))

       <regnum>2</regnum> [ 2]: B6483 機(jī)號(hào)對(duì)應(yīng)的第幾個(gè)括號(hào)(整數(shù))

       <adic1></adic1>

第二個(gè)航班號(hào)(此為特殊處理那種兩個(gè)航班號(hào)之間隔著一些說明信息,比如CZ6002 SVO-URC CZ6907這種格式, 一般格式上沒有,一般不填寫)

       <depad1>3</depad1> [ 3]: JJN

第一個(gè)航班的起飛機(jī)場(chǎng)對(duì)應(yīng)的第幾個(gè)括號(hào)(整數(shù))

       <etd1>4</etd1> [ 4]: 2340第一個(gè)航班的預(yù)計(jì)起飛時(shí)間對(duì)應(yīng)的第幾個(gè)括號(hào)(整數(shù))

       <arrad1>7</arrad1>[ 7]: NKG 第一個(gè)航班的降落機(jī)場(chǎng)對(duì)應(yīng)的第幾個(gè)括號(hào)(整數(shù))

       <depad2></depad2>

       <etd2></etd2>

       <arrad2></arrad2>

       <date>6</date>[ 6]: 26MAR日期對(duì)應(yīng)的第幾個(gè)括號(hào)(整數(shù))(若表達(dá)式帶有日期,此項(xiàng)必填)

    </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.

設(shè)置: Results---->Report;Command-->Split然后執(zhí)行Run

結(jié)果報(bào)告:

[  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#)顯示的分組捕獲內(nèi)容(對(duì)每一條計(jì)劃捕獲的分組重新從1開始編號(hào))

 如何實(shí)現(xiàn)SITA報(bào)文解碼匹配的正則表達(dá)式

正則表達(dá)式:

\n  LF或ASCII中的0x0A(10)

\r  CR或ASCII中的0x0D(13)

\b:匹配單詞邊界處的空字符

以上是“如何實(shí)現(xiàn)SITA報(bào)文解碼匹配的正則表達(dá)式”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI