簡體   English   中英

單個正則表達式的多個組匹配

[英]multiple group matches for single regex

我正在使用python解析日志,需要從中快速獲取一些值

這是簡單的等效正則表達式和用法示例

pat = re.compile("(1(2[3456]+2)+1)*")

它沒有按預期工作,只有pat.match()返回最后一個匹配組.groups()

這類問題最簡單的解決方案是什么?

更新 (因為維基引擎說使用編輯而不是創建新帖子):

當然,我需要重復比賽。

to_match="1232112542254211232112322421"

正則表達式需要遞歸地應用兩次。 我能忍受,但有什么選擇嗎?

您正在重復捕獲的組而不是捕獲重復的組,這就是您只獲得最后一次捕獲的原因。

你應該使用

pat = re.compile("((1(2[3456]+2)+1)*)")

有關重復捕獲組與捕獲重復組http://www.regular-expressions.info/captureall.html的更多信息,請參閱此處

好的,試試這個(但只有在你學會了如何接受答案之后;-))

s = "123321124421125521"
pat = re.compile("(1(2[3456]+2)+1)")
print pat.findall(s)

刪除量詞並使用findall() 這將導致此列表:

[('123321','2332'),(''124421','2442'),(''125521','2552')]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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