2010-12-13 6 views
2

Ich habe die folgende Zeichenfolge:Gleich zwei aufeinander folgende Wörter mit einer Regex?

The Wild gewann 2 - 1 über die Flammen.

Ich muss die Teamnamen und die Punktzahlen aus dieser Zeichenfolge extrahieren. In Python habe ich folgendes:

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

Nun das Problem ist, gibt es Teamnamen mit Leerzeichen in es wie folgt aus:

Die Red Wings 4 gewonnen - 3 über die Blue Jackets.

Wie würde ich eine Regexp schreiben, die beide dieser Zeichenfolge entspricht?

Antwort

3

Sie können nur Ihre ursprüngliche regex bearbeiten Räume in den Teamnamen Gruppen gehören:

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

Verwenden Sie ([\w ]+) anstelle von (\w+).

+0

Sie können auch (. +) Verwenden – GWW

1

Wenn das Format wirklich konsistent ist, können Sie einfach Ihren Ausdruck ein wenig entspannen und es wird gut funktionieren:

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