weixin_43232310 2018-10-11 06:08 采纳率: 0%
浏览 704

正则表达式匹配不上,请哪位大佬帮忙看看,万谢

这是正则表达式,前面这一大段是我想要的59个字段
((?:OriSys)|(?:DesSys)|(?:Channel)|(?:ChnnlUsr)|(?:UID)|(?:PID)|(?:UsasSys)|(?:Office)|(?:Agent)|(?:Level)|(?:Airline)|(?:FuncCode)|(?:MsgType)|(?:MsgLen)|(?:TimeCost)|(?:IP)|(?:FromSvc)|(?:ToSvc)|(?:Action)|(?:CallSvc)|(?:UIP)|(?:MsgMode)|(?:CallType)|(?:ReleIP)|(?:RC)|(?:DataFmt)|(?:Dir)|(?:EMSubTyp)|(?:EMsgType)|(?:IATAOri)|(?:IATADes)|(?:EDIOri)|(?:EDIDes)|(?:FlowID)|(?:TPR)|(?:ODF)|(?:TLHH1H2)|(?:ThrOMSE)|(?:Vld)|(?:HLD)|(?:RID)|(?:SID)|(?:RuleID)|(?:SvrGrp)|(?:SvrID)|(?:Router)|(?:MemID)|(?:MCSSH1)|(?:MCSSH2)|(?:MCSSID)|(?:LogLen)|(?:QueueID)|(?:RsnCode)|(?:PNR)|(?:Route)|(?:Security)|(?:MltLine)|(?:TKTNo)|(?:CityPair))\=(([^=].*)|([^:].*))\;
需要匹配的文本是
[#%&*^]20180929130028:591.vm-kvm10818-app!SIH:mqrouter_SEAT_CST.10424,140120293115680#SIT00002522018092913002800004078%&B_12345*A^:STAT_IN>
OriSys=SEAT_CST_SYN;DesSys=DEP;UsasSys=J;DataFmt=SIH;MsgType=2;MsgLen=490;QEST=;SLST=;QLCT=;SECT=;QEAT=;SLAT=;QECT=;SLCT=;
SIH=13.1;MsgLen=00000490;HeadLen=00000106;ExtLen=00000116;ResLen=00000047; 0X0AOriSys=SEAT_CST_SYN;DesSys=DEP;MsgType=2;TransactionID=SIT00002522018092913002800004078;SessionID=B_12345; 0X0AFuncCode=NULL;UID=SEATING;UsasSys=J;PID=12345;CWA=A;Office=099;Airline=CA;Agent=99;Level=73;ReqFormat=4;ResFormat=7; 0X0ASIH:00000033=TLHSYN:SEATING_APP1,1376292,4036 0X0D; 0X0ADEP.SQRY/0/{"body":{"oTid":"20180323100126001012"},"operation":"sessionStatusQuery","tid":"SIT00002522018092913002800004078","version":"1.0"} 0X0A 0X0A
匹配结果是:
OriSys=SEAT_CST_SYN;DesSys=DEP;UsasSys=J;DataFmt=SIH;MsgType=2;MsgLen=490;QEST=;SLST=;QLCT=;SECT=;QEAT=;SLAT=;QECT=;SLCT=;
MsgLen=00000490;HeadLen=00000106;ExtLen=00000116;ResLen=00000047; 0X0AOriSys=SEAT_CST_SYN;DesSys=DEP;MsgType=2;TransactionID=SIT00002522018092913002800004078;SessionID=B_12345; 0X0AFuncCode=NULL;UID=SEATING;UsasSys=J;PID=12345;CWA=A;Office=099;Airline=CA;Agent=99;Level=73;ReqFormat=4;ResFormat=7; 0X0ASIH:00000033=TLHSYN:SEATING_APP1,1376292,4036 0X0D;
我的几个问题是:
1,比如SLST等没在我那59个字段中为什么也匹配上了?比如SIH这种没在字段中的就没匹配上。
2,为什么会匹配到0x0A和0x0D

  • 写回答

1条回答 默认 最新

  • Yirujet 2018-10-11 09:56
    关注

    问题出在这个地方:\=(([^=].*)|([^:].*))\;,[^=]和[^:]后紧跟的'.'会匹配任意字符,去掉即可,改成=(([^=]*)|([^:]*));。对了,等号和分号不用转义。

    评论

报告相同问题?

悬赏问题

  • ¥15 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
  • ¥15 NAO机器人的录音程序保存问题
  • ¥15 C#读写EXCEL文件,不同编译
  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符