我很困惑:
>>> import re
>>> re.match(r"(?P<all>-(?P<one>\w+))*","-ab-cde-fghi-jkl-mn").groups()
('-mn', 'mn')
>>> re.match(r"(?P<all>-(?P<one>\w+)*)","-ab-cde-fghi-jkl-mn").groups()
('-ab', 'ab')
如何获取所有条款的列表,最好是
["ab","cde","fghi","jkl","mn"]
但是
"-ab-cde-fghi-jkl-mn"
也很好。
(请注意,我完全了解str.split("-")
。这是关于re
- 如何匹配整套的问题
答案 0 :(得分:4)
示例:
s = "-ab-cde-fghi-jkl-mn"
re.findall(r'[a-z]+', s)
输出:
['ab', 'cde', 'fghi', 'jkl', 'mn']
答案 1 :(得分:2)
默认情况下,它的工作方式与.NET类似。
Python不支持这一点。您在Python中可以获得的最接近的行为是在捕获的子字符串上重复匹配:
>>> match = re.match(r"(?P<all>(?:-(?P<one>\w+))*)","-ab-cde-fghi-jkl-mn")
>>> re.findall(r"-(?P<one>\w+)", match.group("all"))
['ab', 'cde', 'fghi', 'jkl', 'mn']
如果内部模式不是非常简单,它可能会变得复杂。