Ich versuche, ein Dokument zu analysieren, in dem Referenznummern verstreut sind.
Text Text Text {4: 2} unglaublicherer Text {4: 3} viel später {222: 115} und noch etwas mehr Text.
Die Referenzen werden immer in Klammern gesetzt, und zwischen den beiden befindet sich immer ein Doppelpunkt. Ich schrieb einen Ausdruck, um sie zu finden.
{[0-9]:[0-9]}
Dies schlägt jedoch offensichtlich fehl, sobald Sie auf eine zwei- oder dreistellige Zahl stoßen, und ich habe Probleme, herauszufinden, was das sein sollte. Es wird nie mehr als 3 Ziffern geben. {999: 999} ist die maximale Größe.
Hat jemand eine Idee für einen richtigen Ausdruck, um damit umzugehen?
regex
Tag.Antworten:
Versuchen Sie, Pluszeichen hinzuzufügen.
quelle
Welche Regex-Engine verwenden Sie? Die meisten von ihnen unterstützen den folgenden Ausdruck:
Das
\d
ist eigentlich eine Abkürzung für[0-9]
, aber der wichtige Teil ist die Hinzufügung,+
die "eins oder mehrere" bedeutet.quelle
Versuche dies:
Das
{1,3}
bedeutet "Übereinstimmung zwischen 1 und 3 der vorhergehenden Zeichen".quelle
Mit können Sie festlegen, wie oft das vorherige Element übereinstimmen soll
{min,max}
.Sie können auch
\d
Ziffern anstelle der[0-9]
meisten Regex-Geschmacksrichtungen verwenden:Vielleicht möchten Sie auch in Betracht ziehen, dem Äußeren zu entkommen
{
und}
nur um klar zu machen, dass sie nicht Teil einer Wiederholungsdefinition sind.quelle
{\ d *: \ d *} sollte funktionieren.
* bedeutet, dass 0 oder mehr der vorhergehenden Vorkommen übereinstimmen, was eine Ziffer ist.
quelle