You could create a little class that returns the boolean result of calling match, and retains the matched groups for subsequent retrieval:
import re
class REMatcher(object):
def __init__(self, matchstring):
self.matchstring = matchstring
def match(self,regexp):
self.rematch = re.match(regexp, self.matchstring)
return bool(self.rematch)
def group(self,i):
return self.rematch.group(i)
for statement in ("I love Mary",
"Ich liebe Margot",
"Je t'aime Marie",
"Te amo Maria"):
m = REMatcher(statement)
if m.match(r"I love (w+)"):
print "He loves",m.group(1)
elif m.match(r"Ich liebe (w+)"):
print "Er liebt",m.group(1)
elif m.match(r"Je t'aime (w+)"):
print "Il aime",m.group(1)
else:
print "???"
Update for Python 3 print as a function, and Python 3.8 assignment expressions - no need for a REMatcher class now:
import re
for statement in ("I love Mary",
"Ich liebe Margot",
"Je t'aime Marie",
"Te amo Maria"):
if m := re.match(r"I love (w+)", statement):
print("He loves", m.group(1))
elif m := re.match(r"Ich liebe (w+)", statement):
print("Er liebt", m.group(1))
elif m := re.match(r"Je t'aime (w+)", statement):
print("Il aime", m.group(1))
else:
print()
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…