2016-12-05 6 views
0

Beispiel in dieser Zeichenfolge:Wie passt man [a-z] [a-z] [a-z] an, wobei diese Buchstaben in jedem einzelnen Match den gleichen Buchstaben haben müssen?

"a a b b b c b c c c a a a a c b c"

würde ich die Regex gerne wählen.

b b b;

c c c;

a a a;

a a a;

Ich fand heraus, dass ich nach vorne schauen mit (= auch die überlappenden Einsen zu entsprechen, die Frage ist, wie die Buchstaben die gleiche in jedem einzelnen Spiel zu machen, statt Ergebnisse zu bekommen wie:

aab;

abb;

bbc;

und so weiter ...

+0

Verwendungsgruppe und Rückreferenzierung erfassen. –

+0

Können Sie stattdessen LINQ verwenden? – EJoshuaS

Antwort

1

Erfassung der erste Buchstabe und entsprechen den nächsten zwei dagegen:

preg_match_all('/([a-z]) \1 \1/', $string, $matches); 
  • ([a-z]) Spiel und erfaßt ein Raum einen Brief az
  • Spiel dann paßt \1 den wieder angepasst Brief
  • Spiel einen Raum dann paßt \1 den angepassten Brief wieder

/([a-z])(\1){2}/ wird auch funktionieren:

  • ([a-z]) Spiel und erfassen einen Brief a-z
  • (\1) Spiel ein Raum dann \1 entspricht dem angepassten Brief wieder zweimal {2}
+0

Ich teste es hier: http://www.phpliveregex.com/ und dies scheint keine Ergebnisse zu geben. Ok, komisch es gibt die Ergebnisse, wenn ich nicht nach vorne schaue, aber es sieht nicht aus wenn ich hinschaue. I.e. Dies gibt Ergebnisse zurück: ([a-z]) \ 1 \ 1 und dies nicht (? = (([A-z]) \ 1 \ 1)) – cybera

+0

Weiß nicht, das ist nichts wie deine Frage. – AbraCadaver

+0

Wie auch immer ich es wollte. Ich werde es von hier aus herausfinden. Vielen Dank. – cybera

Verwandte Themen