2.14 Unnötiges Backtracking vermeiden

Problem

Das vorige Rezept beschreibt das Backtracking und den Unterschied zwischen gierigen und genügsamen Quantoren. In manchen Situationen ist Backtracking aber unnötig.

\b\d+\b nutzt einen gierigen Quantor, \b\d+?\b einen genügsamen. Beide passen zum gleichen Objekt – einer Ganzzahl. Bei gleichem Ausgangstext werden beide die gleichen Übereinstimmungen finden. Jegliches Backtracking ist unnötig. Es soll nun dieser reguläre Ausdruck so umgeschrieben werden, dass explizit jedes Backtracking vermieden und der reguläre Ausdruck damit effizienter wird.

Lösung

\b\d++\b
  • Regex-Optionen: Keine

  • Regex-Varianten: Java, PCRE, Perl 5.10, Ruby 1.9

Die einfachste Lösung ist die Verwendung eines possessiven Quantors. Aber ...

Get Reguläre Ausdrücke Kochbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.