Python 查找两个单词的简单正则表达式
我有一个快让我发疯的正则表达式问题:Python 查找两个单词的简单正则表达式,python,regex,Python,Regex,我有一个快让我发疯的正则表达式问题: 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)) 如果单词以大写字母开头,则此
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.”或“med.”后的所有单词。
现在我需要字符串后面两个单词的输出。只有以大写字母开头,这两个字母才能再次出现。我试过一些东西,比如:
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))
你看我是怎么在那里打结的。我怎样才能到达“伦伯特水星”和“彼得”
现在我需要两个词,在“Dr.”和“med.”后面加上一两个词
我需要去
“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
您需要使用下面的
正则表达式
:-
(?:Dr|med)\.\s*([A-Z][a-z]*)
谢谢,成功了。我对它进行了一些编辑,以便可以添加更多的字符串。谢谢