2016-09-15 7 views
0

Diese Regex soll mit beliebigen Zahlen übereinstimmen (Real oder Integer - keine wissenschaftliche Notation). Ich bin mir jedoch nicht sicher, was "?:" In den Klammern bedeutet. Kann jemand das zusammen mit einigen Beispielen erklären? Vielen Dank.Perl Regex -? D + (?: . D +)?

+2

?: Ist eine nicht erfassende Gruppe. Siehe: http://stackoverflow.com/questions/3512471/what-is-a-non-capturing-group –

+0

Während das erwähnte Duplikat erklärt, was '?:' In der Regex tut, sollte die Motivation hinter der Verwendung hier noch sein Erklärt sein. –

Antwort

1

In der Regex

?\d+(?:\.\d+)? 

Die ?: Menge innerhalb der Gruppe in Klammern weist die Regex-Engine, um die Gruppe nicht zu erfassen, was es sonst der Fall wäre.

Indem sie nicht die Menge in Klammern erfassen, die Capture-Gruppe zur Verfügung (die die erste sein soll, und der gesamte Ausdruck) würden nur die Ziffern vorkommen vor den Dezimalpunkt sollte die Zahl eine Bruchkomponente.

Verwandte Themen