我想在python中为下面的行编写一个正则表达式来grep相应的值:establishmentCause mo-Signalling,Freq = 6300Radio Bearer ID = 0, Physical Cell ID = 396在这里,我想获取每个标头的值,我使用下面的正则表达式来获取值,并且除了“Radio Bearer ID”之外的所有值都成功pat = re.compile(r'%s\s[=\s]*\b(.*)\b(?:,|\Z)'%items[i])value = pat.search(line)print(value.group(1))这给出了"Radio Bearer ID"as 0, Physical Cell ID = 396where as I want only的输出0。有人可以告诉我我的正则表达式有什么问题,即使我正在匹配,并且\Z重新引擎不会限制匹配直到,但继续进一步。
2 回答

幕布斯6054654
TA贡献1876条经验 获得超7个赞
量词*
是贪婪的。您可以使用非贪婪版本*?
在,
字符串 ( \Z
)或结尾之前尽可能少地匹配:
pat = re.compile(r'%s\s[=\s]*\b(.*?)\b(?:,|\Z)'%items[i])
或者,您可以使用字符类排除,
:
pat = re.compile(r'%s\s[=\s]*\b([^,]*)\b(?:,|\Z)'%items[i])
添加回答
举报
0/150
提交
取消