我有一个包含许多单词的字符串。我需要从中提取特定部分。详细信息如下:
假设,我有以下字符串:
x = "I am amartya ccccc amartya xxxxx amartya yyyyy amartya mohan tagore bvfvhbvbv amartya vfvbvbvfhv amartya"
现在,我想提取amartya
和tagore
之间的内容,但该内容应该恰好是'mohan'
,即,出现的问题正在显现。我曾经使用过regexp,但这给了我以下内容:
"ccccc amartya xxxxx amartya yyyyy amartya mohan"
,但我只希望'mohan'
作为我的o / p。
答案 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