2017-06-02 3 views
-2

ich so eine Zeichenfolge wie haben:Suche nach dem dritten Auftreten einer Phrase in einer Zeichenfolge mit Regex

group[129][1][person][0][name]

habe ich meine Regex derzeit bei \[\d+\] die [129] übereinstimmen, [1] und [0].

Allerdings möchte ich es nur zu [0] das dritte Vorkommen entsprechen. Ich kann dazu nichts finden. Wie mache ich das?

+1

fehlt Ihnen ein Sprachtag? –

+0

Setzen Sie es in eine Erfassungsgruppe und erhalten Sie das dritte Vorkommen? Sehen Sie ein Beispiel [hier] (https://regex101.com/r/uE0vM5/5) –

+0

@ XaviLópez Wie erhalten Sie das 3. Vorkommen von einer Erfassungsgruppe? –

Antwort

0

Sie könnten einfach alle drei in Ihre Regex sind:

\d+\D+\d+\D+(\d+) 

Die Capture-Gruppe den dritten Satz von Ziffern erfassen wird. Beachten Sie, dass \D alles entspricht, was keine Ziffer ist.

Sie könnten auch Wiederholungen vermeiden, indem sie es mit einer wiederholten Gruppe ausdrücken:

(?:\d+\D+){2}(\d+) 

Wenn Sie , das dritte Vorkommen ersetzen möchte etwas wie folgt verwenden:

s/(\d+\D+\d+\D+)\d+/${1}FOO/; 

Diese ersetzen die dritte Zifferngruppe mit dem Wort "FOO". Verwenden Sie hier die Perl-Syntax, da Sie die Sprache nicht angegeben haben.

+0

Dann, wie würde ich die letzte Ziffer ersetzen leicht? –

+0

@RyanHipkiss bearbeitet. Es wäre gut gewesen, das an erster Stelle in Ihrer Frage zu erwähnen. –

+0

Ich würde die Antwort akzeptieren, aber das entspricht der ganzen Zeichenfolge. Ich möchte nur das dritte Vorkommen treffen. –

Verwandte Themen