获取特定字符串之间的文本作为正则表达式中的不同字符串

时间:2019-05-29 11:24:58

标签: regex python-3.x string

我一直在尝试获取两个字符串(“ Item”和“ Item”)之间的文本,但是由于在整个大型文档(它本身是一个字符串)中多次出现“ Item”,因此我得到了几乎所有文献。 我无法弄清楚正则表达式代码来获取一个“项目”和下一个“项目”之间的文本,直到最后一个“项目”之间的字符串不同。

我已经尝试过正则表达式代码,但是我无法弄清楚。

第一次尝试:

(?<=Item)(.*)(?=Item)

第二次尝试:

value = search('Item(.+)Item', text)
if value is not None:
    value = value.group(1)

第一次尝试会选择几乎所有文档

第二次尝试仅给出“项目”和“项目”之间的第一次出现的文本。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

import re

string = 'Item Hello this is a sample Item String on StackOverflow Item Posted on a Item Wednesday'

print re.findall(r"(?<=Item ).+?(?= Item|$)",  string)

输出:

['Hello this is a sample', 'String on StackOverflow', 'Posted on a', 'Wednesday']

说明:

(?<=Item )      # positive lookbehind, make sure we have "Item " before
.+?             # 1 or more any character, not greedy
(?= Item|$)     # positive lookahead, make sure we have "Item " or end of line after