2016-04-15 5 views
2

Ich versuche, einen der 4000 Ausdrücke anzupassen (und entfernen).Python reguläre Ausdrücke ist die Reihenfolge der Alternativen wichtig für die Geschwindigkeit/Auswahl zwischen Alternativen

Stecke ich die am häufigsten verwendeten Streichhölzer an der Vorderseite wird, dass eine Geschwindigkeitsanpassung (oder ist es nicht definiert)

obwohl in der Regel exklusiv, habe ich manchmal Standardfälle haben: ‚ax * | a (0-9) |‘ , dh 'a', aber ich möchte ein gieriges Spiel, wenn möglich. reicht es aus, a (0-9) | ax * neu zu ordnen oder ist dies nicht durch die Spezifikation garantiert?

Antwort

0

Ist die Reihenfolge der Alternativen wichtig für die Geschwindigkeit/Auswahl zwischen Alternativen?

Ja, tut es. Alternative Gruppen werden von links nach rechts analysiert, und zwar an jeder Position in der Eingabezeichenfolge.

Daher ist es schon ein Vorteil, die häufigsten Spiele am Start zu platzieren.

Wenn man über unanchored Wechsel Listen in NFA regex (wie in Python) zu sprechen, ist es wichtig, dass Alternativen, die am gleichen Ort entsprechen können, sollten so bestellt werden, dass die längsten zuerst kommt weil sonst ein kürzere Alternative wird immer "gewinnen", und Sie können mit xxxone enden, wenn Sie mit some|someone ->xxx wollen xxx von someone erhalten.

+0

Haben Sie eine Referenz, die dies dokumentiert? – seanv507

+0

Der [Haupt hier] (http://www.regular-expressions.info/alternation.html): * Die Regex-Engine ist eifrig. Es hört auf zu suchen, sobald es eine gültige Übereinstimmung findet. * –

+0

Ich konnte gestern die Frage nicht aufheben, da mir die Stimmen ausgegangen sind - fertig. –

Verwandte Themen