python正则表达式如何在两个特定单词之间仅提取一个单词

2024-04-25 01:27:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在两个特定单词之间提取一个单词。下面是一个例子。我的例外是提取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”之间只提取一个单词


Tags: textimportmatchbackcall单词例子regex
1条回答
网友
1楼 · 发布于 2024-04-25 01:27:41

以下是如何做到这一点:

import re

text = 'ask her to call Mary back when she comes back'

for match in re.findall('(?<=call ).*?(?= back)', text):
    print(match)

输出:

Mary

细分:

这是一个积极的前景:(?<=pattern1)
这是一个积极的展望:(?=pattern2)
这意味着提取pattern1pattern2.*?(非贪婪)



更新:

也可以将re.findall('(?<=call ).*?(?= back)', text)更改为re.findall('call (.*?) back', text)

相关问题 更多 >