我得到了一个由原始文本和捕获组组成的正则表达式。如何从中提取所有原始文本片段?
例如:
pattern = r"Date: (\d{4})-(\d{2})-(\d{2})"
assert extract(pattern) == ["Date: ", "-", "-", ""]
这里,结果中的最后一个条目是一个空字符串,表示最后一个捕获组之后没有原始文本。
解决方案不应提取捕获组内的原始文本:
pattern = r"hello (world)"
assert extract(pattern) == ["hello ", ""]
该解决方案也应该适用于转义字符,例如:
pattern = r"\(born in (.*)\)"
assert extract(pattern) == ["(born in ", ")"]
理想情况下,解决方案应该是高效的,避免在 Python 中循环字符串。
听起来您希望将捕获组中未捕获的所有内容返回给您。没有正则表达式功能可以做到这一点。
您想要解决的问题是什么?如果你去匹配
pattern = r"Date: (\d{4})-(\d{2})-(\d{2})"
那么你打算如何处理结果?
leftovers = ["Date: ", "-", "-", ""]