从正则表达式中提取未捕获的原始文本

问题描述 投票:0回答:1

我得到了一个由原始文本和捕获组组成的正则表达式。如何从中提取所有原始文本片段?

例如:

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 中循环字符串。

python regex
1个回答
0
投票

听起来您希望将捕获组中未捕获的所有内容返回给您。没有正则表达式功能可以做到这一点。

您想要解决的问题是什么?如果你去匹配

pattern = r"Date: (\d{4})-(\d{2})-(\d{2})"

那么你打算如何处理结果?

leftovers = ["Date: ", "-", "-", ""]
© www.soinside.com 2019 - 2024. All rights reserved.