Python 正則表達式 捕獲組和非捕獲組


參考鏈接:https://www.cnblogs.com/kevin-yuan/archive/2012/11/11/2765340.html

我希望的匹配結果是這樣的

>>> d
'a1a2a3a4a5a6'
>>> re.findall(r'(?:\w\d){5}',d)
['a1a2a3a4a5']

但是一開始是這樣的

>>> d
'a1a2a3a4a5a6'
>>> re.findall(r'(\w\d){5}',d)
['a5']

發現使用分組時錯誤的,經過從網絡查找,發現是因為捕獲組和非捕獲組的原因。(...)是捕獲組,將括號內的規則視為一個整體,有一個回溯引用,將所有匹配的分組保存在內存中,引用分組的時候引用匹配出的文本。非捕獲組(?:...)僅僅匹配文本,但是不會捕獲文本保存到內存中。但是關於回溯的引用,暫時還沒有理解明白。網絡中很多地方使用\1來引用捕獲組的子表達式相對位置,但是我使用的是{},也回溯成功了。網絡中給出的實例運行后得到的結果和實例給出的結果不一致。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM