[英]Python regex not matching for “,” or end of string
我想在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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.