gpt4 book ai didi

python - 简单的正则表达式来找到两个词

转载 作者:太空宇宙 更新时间:2023-11-04 01:13:24 25 4
gpt4 key购买 nike

我有一个关于正则表达式的快速问题,这让我发疯:

    sentence="Dr. Peter is a great man. Dr. med. Lumpert Mercury is a great man."
for m in re.finditer("(Dr\.|med\.)\s([A-Z][a-z]+)", sentence):
print '%02d-%02d: %s' % (m.start(), m.end(), m.group(2))

这段代码给出了字符串“Dr.”之后的所有单词。或“医学”。如果单词以大写字母开头。现在我需要字符串后两个单词的输出。两者都只有在它们以大写字母开头时才再次出现。我尝试了一些东西,比如:

    for m in re.finditer("(Dr\.|med\.)\s(([A-Z][a-z]+)|([A-Z][a-z]+)\s([A-Z][a-z]+))", sentence):
print '%02d-%02d: %s' % (m.start(), m.end(), m.group(2, 3))

你看我是怎么被打结的。我怎样才能到达“Lumpert Mercury”和“Peter”?

现在我需要两者,“博士”后的一个词或两个词。和“医学”。

我需要得到 “Peter”和“Lumpert Mercury”。

最佳答案

使用非捕获组,使其在原始捕获组内可选。

>>> import re
>>> s = "Dr. Peter is a great man. Dr. med. Lumpert Mercury is a great man."
>>> for m in re.finditer("(?:Dr|med)\.\s*([A-Z][a-z]+(?: [A-Z][a-z]+)?)", s):
... print '%02d-%02d: %s' % (m.start(), m.end(), m.group(1))

00-09: Peter
30-50: Lumpert Mercury

关于python - 简单的正则表达式来找到两个词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26263274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com