¿Existe alguna manera en Python para acceder a grupos de coincidencias sin crear explícitamente un objeto de coincidencia (u otra forma de embellecer el ejemplo siguiente)?Grupos de coincidencia en Python
Aquí es un ejemplo para aclarar mi motivación para la pregunta:
código Perl siguiente
if ($statement =~ /I love (\w+)/) {
print "He loves $1\n";
}
elsif ($statement =~ /Ich liebe (\w+)/) {
print "Er liebt $1\n";
}
elsif ($statement =~ /Je t\'aime (\w+)/) {
print "Il aime $1\n";
}
traducido en Python
m = re.search("I love (\w+)", statement)
if m:
print "He loves",m.group(1)
else:
m = re.search("Ich liebe (\w+)", statement)
if m:
print "Er liebt",m.group(1)
else:
m = re.search("Je t'aime (\w+)", statement)
if m:
print "Il aime",m.group(1)
se ve muy incómoda (if-else-cascada, hacer coincidir la creación de objetos).
duplicado: http://stackoverflow.com/questions/122277/ how-do-you-translate-this-regular-expression-idiom-from-perl-into-python –
Advertencia: Python re.match() específicamente coincide con el inicio del objetivo. Por lo tanto, re.match ("I love (\ w +)", "Oh! How I love thee") NO coincidiría. O desea usar re.search() o prefijar explícitamente la expresión regular con los patrones comodín apropiados para re.match (". * I love (\ w +)", ...) –
@Jim Dennis: gracias a señalar; Adapte el ejemplo de python en consecuencia – Curd