ฉันไม่รู้ว่าจะล้างสิ่งต่าง ๆ อีกหรือเปล่า แต่ลองจินตนาการว่าเกิดอะไรขึ้นภายใต้ประทุนด้วยวิธีง่ายๆเราจะสรุปสิ่งที่เกิดขึ้นโดยใช้การจับคู่
# group(0) return the matched string the captured groups are returned in groups or you can access them
# using group(1), group(2)....... in your case there is only one group, one group will capture only
# one part so when you do this
string = 'abcdla'
print(re.match('(ab|cd)', string).group(0)) # only 'ab' is matched and the group will capture 'ab'
print(re.match('(ab|cd)+', string).group(0)) # this will match 'abcd' the group will capture only this part 'cd' the last iteration
findall
จับคู่และใช้สตริงในเวลาเดียวกันลองจินตนาการว่าเกิดอะไรขึ้นกับ REGEX นี้'(ab|cd)'
:
'abcdabla' ---> 1: match: 'ab' | capture : ab | left to process: 'cdabla'
'cdabla' ---> 2: match: 'cd' | capture : cd | left to process: 'abla'
'abla' ---> 3: match: 'ab' | capture : ab | left to process: 'la'
'la' ---> 4: match: '' | capture : None | left to process: ''
--- final : result captured ['ab', 'cd', 'ab']
ตอนนี้สิ่งเดียวกันกับ '(ab|cd)+'
'abcdabla' ---> 1: match: 'abcdab' | capture : 'ab' | left to process: 'la'
'la' ---> 2: match: '' | capture : None | left to process: ''
---> final result : ['ab']
ฉันหวังว่านี่จะล้างสิ่งเล็กน้อย