簡體   English   中英

Python正則表達式與“,”或字符串末尾不匹配

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM