我一直在尝试获取两个字符串(“ Item”和“ Item”)之间的文本,但是由于在整个大型文档(它本身是一个字符串)中多次出现“ Item”,因此我得到了几乎所有文献。 我无法弄清楚正则表达式代码来获取一个“项目”和下一个“项目”之间的文本,直到最后一个“项目”之间的字符串不同。
我已经尝试过正则表达式代码,但是我无法弄清楚。
第一次尝试:
(?<=Item)(.*)(?=Item)
第二次尝试:
value = search('Item(.+)Item', text)
if value is not None:
value = value.group(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