我想在python中为以下几行写一个正则表达式,以grep相应的值:
establishmentCause mo-Signalling,
Freq = 6300
Radio Bearer ID = 0, Physical Cell ID = 396
在这里,我想获取每个标头的值,我正在使用下面的正则表达式来获取值,并且除“无线承载ID”之外的所有代码均能成功获取
pat = re.compile(r'%s\s[=\s]*\b(.*)\b(?:,|\Z)'%items[i])
value = pat.search(line)
print(value.group(1))
这将"Radio Bearer ID"
的输出显示为0, Physical Cell ID = 396
,其中我只需要0
。即使我匹配,
和\Z
时,有人可以告诉我我的正则表达式出了什么问题,重新引擎并没有将匹配限制到,
,而是继续了。 >
答案 0 :(得分:0)
量词*
贪婪。您可以使用非贪婪版本*?
在,
或字符串结尾(\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])
答案 1 :(得分:0)
您可以使用Lookbehind和Lookahead
例如:
import re
s = """establishmentCause mo-Signalling,
Freq = 6300
Radio Bearer ID = 0, Physical Cell ID = 396"""
pat = re.compile(r'(?<=Radio Bearer ID = )(.*)(?=,)')
value = pat.search(s)
print(value.group(1))
输出:
0