当被问及网络信息时,我试图匹配调制解调器给出的输出,它看起来像这样:
Network survey started...
For BCCH-Carrier:
arfcn: 15,bsic: 4,dBm: -68
For non BCCH-Carrier:
arfcn: 10,dBm: -72
arfcn: 6,dBm: -78
arfcn: 11,dBm: -81
arfcn: 14,dBm: -83
arfcn: 16,dBm: -83
所以我有两种类型的表达式要匹配,BCCH 和非 BCCH。以下代码几乎可以工作:
match = re.findall('(?:arfcn: (\d*),dBm: (-\d*))|(?:arfcn: (\d*),bsic: (\d*),dBm: (-\d*))', data)
但似乎两个表达式都被匹配,并且未找到字段留空:
>>> match
[('', '', '15', '4', '-68'), ('10', '-72', '', '', ''), ('6', '-78', '', '', ''), ('11', '-81', '', '', ''), ('14', '-83', '', '', ''), ('16', '-83', '', '', '')]
有人可以帮忙吗?为什么会有这样的行为?我试过改变表达式的顺序,但没有运气。
谢谢!