我想在两个特定单词之间提取一个单词。下面是一个例子。我的例外是提取CALL和BACK之间的单词。但从第一次打电话到最后一次回电话,我总是记着所有的话
import regex
text = 'ask her to call Mary back when she comes back'
p = r'(?i)(?s)call(.*)back'
for match in regex.finditer(p, str(text)):
print (match.group(1))
预期产出:
玛丽
实际产量:
玛丽回来时回来了
更新:感谢您提供的解决方案。我只是意识到我没有清楚地描述我的问题。我想在文章中取消识别某人的姓名或某个组织。这篇文章有如下句子 “让她回来后给办公室打电话”, “她被告知给玛丽回电话”, “当她收到噪音时,她会给NIH回电话。”
因此,我的目的是提取上述句子中的“玛丽”、“NIH”。这意味着在“call”和“back”之间只能提取一个单词
p=r’(?i)(?s)call(.*back)提取“call”和“back”之间的所有单词
那么我的问题是,如何在“call”和“back”之间只提取一个单词
以下是如何做到这一点:
输出:
细分:
这是一个积极的前景:
(?<=pattern1)
这是一个积极的展望:
(?=pattern2)
这意味着提取
pattern1
和pattern2
:.*?
(非贪婪)更新:
也可以将
re.findall('(?<=call ).*?(?= back)', text)
更改为re.findall('call (.*?) back', text)
相关问题 更多 >
编程相关推荐