Regex(python)只在前面或后面有特定模式时才多次匹配同一组



假设我有以下文本:

Products to be destroyed: «Prabo», «Palox 2000», «Remadon strong» (Rule). The customers «Dilora» and «Apple» has to be notified.

我需要匹配«»引号内的每个字符串,但仅限于以"开头的句点;待销毁产品:;模式或以(规则(模式结尾。

换句话说,在这个例子中,我不想与Dilora或Apple相匹配。

获取捕获组中引用内容的正则表达式为:

«(.+?)»

是否可以";"锚";它要么是以下模式(如规则(,要么甚至是以前的模式(如"待销毁的产品:"?

这是我在regex101 上保存的尝试

非常感谢。

您可以在箭头之间至少匹配一个部分,当匹配时,例如使用re.findall提取所有部分。

示例数据似乎在一个点内。在这种情况下,您可以使用否定字符类来匹配至少一个与除点之外的任何字符匹配的箭头部分。

Regex演示至少一个匹配,另一个演示匹配之后的单独部分

import re
regex = r"bProducts to be destroyed:[^.]*«[^«»]*»[^.]*."
s = 'Products to be destroyed: «Prabo», «Palox 2000», «Remadon strong» (Rule). The customers «Dilora» and «Apple» has to be notified.'
result = re.search(regex, s)
if result:
print(re.findall(r"«([^«»]*)»", result.group()))

输出

['Prabo', 'Palox 2000', 'Remadon strong']

相关内容

最新更新