weixin_43232310 2018-10-10 22: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 01:56
    关注

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

    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 宝塔面板一键迁移使用不了
  • ¥15 求一个按键录像存储到内存卡的ESP32CAM代码
  • ¥15 如何单独修改下列canvas推箱子代码target参数?,插入图片代替其形状,就是哪个绿色的圆圈每关用插入的图片替代
  • ¥20 四叉树的创建和输出问题
  • ¥15 javaweb连接数据库,jsp文件加载不出来
  • ¥15 matlab关于高斯赛德尔迭代的应用编撰。(相关搜索:matlab代码|迭代法)
  • ¥15 损失匹配问题,求解答
  • ¥15 3500常用汉字书法体检测数据集下载
  • ¥15 odoo17在制造模块或采购模块良品与次品如何分流和在质检模块下如何开发
  • ¥15 Qt音乐播放器的音乐文件相对路径怎么写