首页 > 解决方案 > 获取特定字符串之间的文本作为正则表达式中的不同字符串

问题描述

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

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

第一次尝试 :

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

第二次尝试:

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

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

第二次尝试只给出“Item”和“Item”之间第一次出现的文本。

任何帮助将不胜感激。

标签: regexpython-3.xstring

解决方案


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

推荐阅读