当前位置: 代码迷 >> python >> Python正则表达式与“,”或字符串末尾不匹配
  详细解决方案

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

热度:49   发布时间:2023-07-16 10:32:25.0

我想在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"的输出设置为0, Physical Cell ID = 396 ,其中我只希望0 即使我正在匹配,也可以有人告诉我我的正则表达式出了什么问题,并且\\Z重新启动引擎不会将匹配限制到,而是继续。

量词*是贪婪的。 您可以使用非贪婪版本*? 到之前尽量少匹配,或串(的端\\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])

您可以使用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