正则表达式-仅匹配第二个发现

时间:2018-10-08 15:51:33

标签: python regex text

我正在尝试制作一个正则表达式代码,该代码将从第二个“ ITEM1”到第一个“ ITEM2”之间进行选择。 示例:

ITEM1. text i don't want to find.
ITEM1.  text I want to find

ITEM2.  outside text

ITEM2 outside tex

到目前为止,我想出了以下代码:

(ITEM1)[\s\S]*?(ITEM2)

这将选择从第一个ITEM1到第一个ITEM2的所有内容。我需要在第二个ITEM1和第一个ITEM2之间进行选择的代码。 如果您有任何建议,请告诉我。预先谢谢你!

1 个答案:

答案 0 :(得分:2)

您可以使用

(?s)ITEM1(?:(?!ITEM1).)+?(?=ITEM2)

ITEM1开头,懒惰地重复不包含短语ITEM1的字符(以确保仅匹配ITEM1 second 实例) ,并提前搜索ITEM2

match = re.search(r'(?s)ITEM1(?:(?!ITEM1).)+?(?=ITEM2)', str)