我正在尝试制作一个正则表达式代码,该代码将从第二个“ 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之间进行选择的代码。 如果您有任何建议,请告诉我。预先谢谢你!
答案 0 :(得分:2)
您可以使用
(?s)ITEM1(?:(?!ITEM1).)+?(?=ITEM2)
以ITEM1
开头,懒惰地重复不包含短语ITEM1
的字符(以确保仅匹配ITEM1
的 second 实例) ,并提前搜索ITEM2
。
match = re.search(r'(?s)ITEM1(?:(?!ITEM1).)+?(?=ITEM2)', str)