如何从文本中提取特定部分

时间:2019-06-17 09:12:30

标签: python json python-3.x string-parsing

我有一个包含许多单词的字符串。我需要从中提取特定部分。详细信息如下:

假设,我有以下字符串:

x = "I am amartya ccccc amartya xxxxx amartya yyyyy amartya mohan tagore bvfvhbvbv amartya vfvbvbvfhv amartya"

现在,我想提取amartyatagore之间的内容,但该内容应该恰好是'mohan',即,出现的问题正在显现。我曾经使用过regexp,但这给了我以下内容: "ccccc amartya xxxxx amartya yyyyy amartya mohan",但我只希望'mohan'作为我的o / p。

2 个答案:

答案 0 :(得分:2)

此正则表达式适用于您的特定示例:

r = re.search("(amartya)(?!.*amartya.*tagore)(.*)(tagore)", x)
r.group(2).strip()

它的基本含义是:匹配以“ amartya”开头并以“ tagore”结尾的模式,并且它们之间的任何内容都不再包含“ amartya”一词。

第二组是(.*),它匹配“ amartya”和“ tagore”之间的任何内容

从文档(re):

  

(?!...)

     

如果下一个...不匹配,则匹配。这是负面的   前瞻性断言。例如,Isaac (?!Asimov)将与'Isaac '相匹配   仅当其后没有'Asimov'时。

希望有帮助。

答案 1 :(得分:1)

在这种情况下,您可以在“ tagore”处开始拆分,然后再拆分“ amartya”并捕获最后一个字符串:

Impl