我不明白为什么这个正则表达式只返回最后一个匹配:
import re
text = """
Chicken chicken chicken chicken chicken chicken.
#=================
# @title Chicken
# @author Me
#=================
Chicken chicken chicken.
"""
rx = r"#=+\n(?:#\s*@(\w+)\s+(.*)\n)+#=+"
for match in re.finditer( rx, text ):
print match.groups()
# Output:
# ('author', 'Me')
我希望这个正则表达式返回[ ('title', 'Chicken'), ('author', 'Me') ]
,但它似乎只返回最后一个匹配。如果我设置标志re.M
(多行),并且标志re.DOTALL
不是我打算在这里,那么这不会改变。
为清楚起见,您可以visualise the regex here,这似乎是我的意图,即:
#===...
# @(word) (anything)