[英]Regex : Return a different ordering of matches in a single capturing group
[英]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.