2010-12-13 26 views
2

J'ai la chaîne suivante:Correspondant à deux mots suivants avec une regex?

sauvage a gagné 2 - 1 sur les Flames.

Je dois extraire les noms d'équipes et les scores de cette chaîne. En Python, je l'ai fait les suivantes:

foo = re.findall(r'The (\w+) won (\d+) - (\d+) over the (\w+)\.', mystring) 

Maintenant, le problème est, il y a des noms d'équipe avec les espaces blancs comme ceci:

Les Red Wings ont gagné 4 - 3 sur les Blue Jackets.

Comment procéder pour écrire une expression rationnelle qui correspond à ces deux chaînes?

Répondre

3

Vous pouvez simplement modifier votre regex d'origine pour inclure des espaces dans les groupes Nom de l'équipe:

foo = re.findall(r'The ([\w ]+) won (\d+) - (\d+) over the ([\w ]+)\.', mystring) 
3

Utilisez ([\w ]+) au lieu de (\w+).

+0

Vous pouvez également utiliser (. +) – GWW

1

Si le format est vraiment cohérent, vous pouvez simplement vous détendre votre expression un peu et ça va bien fonctionner:

foo = re.findall(r'The (.+) won (.+) - (.+) over the (.+).', mystring)