Python正则表达式与“,”或字符串结尾不匹配

我想在python中为下面的行编写一个正则表达式来grep相应的值:


establishmentCause mo-Signalling,

Freq = 6300

Radio 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重新引擎不会限制匹配直到,但继续进一步。


jeck猫
浏览 133回答 2
2回答

幕布斯6054654

量词*是贪婪的。您可以使用非贪婪版本*?在,字符串 ( \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])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python