正则表达式相关问题

1、
规范要求:检查br支持13.2, bw支持wb, 支持pass,不支持fail
2、
UE上br范围是5.9-128,bw范围是nb wb swb fb;
UE上报的invite消息中携带br的几种方式:(1)没有br,默认代表全部支持5.9-128,(2)br=13.2; (3)br=9.6-24.4,其中13.2在此范围内即可;
UE上报的invite消息中携带bw的几种方式:(1)没有bw,默认代表全部支持nb wb swb fb,(2)bw=wb; (3)br=nb-swb,其中wb在此范围内即可;
UE上报的invite消息中携带SIP消息内容(判断通过pass)举例:a=fmtp:127 br=13.2; bw=wb; cmr=-1; ch-aw-recv=-1;或者a=fmtp:127 br=13.2; bw=wb-fb; cmr=-1; ch-aw-recv=-1;(判断失败Fail)举例:a=fmtp:127 br=13.2; bw=swb; cmr=-1; ch-aw-recv=-1;或者a=fmtp:127 br=13.2; bw=swb-fb; cmr=-1; ch-aw-recv=-1
3、
脚本中需要使用正则表达式对Invite消息里面的br和bw进行核查,然后决定是否可以通过:
目前我想到的方法如下:
a=fmtp:(?!.*br=).*|a=fmtp:.*br=13.2.*|a=fmtp:.*br=.*(5.9|7.2|8|9.6)-(16.4|24.4|32|48|64|96|128).*
a=fmtp:(?!.*bw=).*|a=fmtp:.*bw=wb.*|a=fmtp:.*bw=.*(nb|wb)-(wb|swb|fb).*
但是该方法在手机设置bw=swb的情况下的时候,对手机发出invite的SIP消息中内容的检查,此时应该未检查包括wb,应该上报错误,但是我的脚本仍然可以检查通过;我觉得我们的a=fmtp:(?!.*bw=).*|a=fmtp:.*bw=wb.*|a=fmtp:.*bw=.*(nb|wb)-(wb|swb|fb).*存在问题?请帮忙解答。

UE 发送这个:a=fmtp:127 br=13.2; bw=swb; cmr=-1; ch-aw-recv=-1;

正则表达式检查UE发送的消息:a=fmtp:(?!.*bw=).*|a=fmtp:.*bw=wb.*|a=fmtp:.*bw=.*(nb|wb)-(wb|swb|fb).*

结果应该为:脚本检查bw=swb不符合要求,判断为fail,但是我这个正则表达式没有判断吗

就10分,你在逗我。。。。。。。。

a=fmtp:.*bw=.*(nb|wb)-(wb|swb|fb).*

这个部分是错的肯定找不到a=fmtp:127 br=13.2; bw=wb-fb; cmr=-1; ch-aw-recv=-1;

温馨提示:答案为网友推荐,仅供参考
相似回答