Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 查找两个单词的简单正则表达式_Python_Regex - Fatal编程技术网

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]*)

谢谢,成功了。我对它进行了一些编辑,以便可以添加更多的字符串。谢谢