Ich versuche, einen regulären Ausdruck zu erstellen, der ein Wort erkennen wird, das ein Zeichen 3 oder mehrmals im gesamten Wort wiederholt. Ich habe diese zahlreichen Möglichkeiten ausprobiert und ich kann nicht scheinen, die richtige Ausgabe zu bekommen.PHP Regex erkennen wiederholten Zeichen in einem Wort
Antwort
diese regex Versuchen Sie stattdessen
(preg_match('/(.)\1{2,}/', $repeater))
Dies sollte drei oder mehrere Male entsprechen, siehe Beispiel hier http://regexr.com/3fk80
Dies entspricht 3 gleichen ** aufeinanderfolgenden ** Zeichen, kein Wort * * enthält ** 3 gleiche Zeichen. – Aloso
Wenn Sie zusammenhängend sein nicht Buchstaben benötigen, können Sie es mit diesem Muster tun können:
\b\w*?(\w)\w*?\1\w*?\1\w*
sonst sollte dieses genügen:
\b\w*?(\w)\1{2}\w*
Ich fand fast die gleiche Regex, nur ein bisschen länger. – Aloso
Genau genommen sind reguläre Ausdrücke, die \1
, \2
, ... Dinge enthalten, keine mathematischen regulären Ausdrücke und der Scanner, der sie analysiert, ist nicht effizient in dem Sinne, dass sie sich selbst so modifizieren muss, dass sie die akzeptierte Gruppe enthält wird verwendet, um die entdeckte Zeichenkette zu vergleichen, und im Falle eines Fehlers muss sie für die Länge der übereinstimmenden Gruppe zurückverfolgen.
Die kanonische Weise einen echten regulären Ausdruck zum Ausdruck bringen, das Wortzeichen drei- oder mehrmals
(A{3,}|B{3,}|C{3,}|...|Z{3,}|a{3,}|b{3,}|...|z{3,})
und es gibt keine Assoziativität des Betreibers ist {3,}
zu einer Gruppe in der Lage sein, wie Sie in Ihrer Frage gezeigt wiederholt akzeptiert .
Für die pedantisch sollte der reine reguläre Ausdruck sein:
(AAAA*|BBBB*|CCCC*|...|ZZZZ*|aaaa*|bbbb*|cccc*|...|zzzz*)
erneut, dieses Mal, können Sie die Tatsache nutzen, dass AAAA*
so schnell angepasst ist als drei A
s gefunden werden, so wäre es gültig sein auch die Regex:
AAA|BBB|CCC|...|ZZZ|aaa|bbb|ccc|...|zzz
aber die erste Version können Sie die \1
Gruppe erfassen, die die eigentliche Match-Sequenz begrenzt.
Dieser Ansatz wird länger zu schreiben sein, ist aber weitaus effizienter beim Analysieren der Datenkette, da er überhaupt keine Rückverfolgung hat und jedes Zeichen nur einmal besucht.
- 1. Regex Ausdruck für ein Wort mit bestimmten nicht wiederholten Zeichen
- 2. Regex erkennen Kyrillisch Wort
- 3. Wie erkennen Sie wiederholte Zeichen mit einem Regex?
- 4. Genaues Wort mit einem beliebigen Zeichen Regex
- 5. Regex für Wort Zeichen in jeder Sprache
- 6. js zwischen Strings mit wiederholten Zeichen regex
- 7. Capture Wiederholung von Buchstaben in einem Wort mit Regex
- 8. Regex, um doppeltes Zeichen in einem Wort zu erhalten
- 9. Perl regex für ein Zeichen in einem Wort grep
- 10. PHP Regex - Wort finden und alles bis Zeichen
- 11. Regex, um ein ganzes Wort mit wiederholtem Zeichen
- 12. Regex, um ein Wort mit + (plus) Zeichen
- 13. Regex: ignorieren zusätzliche Zeichen
- 14. Erkennen von russischen Zeichen in einem Formular in PHP
- 15. Regex zum Erkennen von sich wiederholenden Zeichen
- 16. php regex find Wort in String
- 17. PHP einen Punkt vor einem Wort zu erkennen
- 18. posix regex kein Wort
- 19. Regex für ein Wort in einem Satz
- 20. Regex, entfernen Sie alle außer einem Zeichen in PHP
- 21. Regex hinzufügen, um ein Wort zu erkennen, das 3 Zeichen wiederholt?
- 22. RegEx Pick Voll Wort
- 23. Separates Wort Regex Ruby
- 24. Wie validiert Unicode "Wort Zeichen" in Python Regex?
- 25. Wie vergleicht man Zeichen mit Zeichen in einem Wort? (Java)
- 26. Längste Teilzeichenfolge von wiederholten Zeichen
- 27. Erkennen von Zeichen in einem XSLT
- 28. PHP: Wort-Check für 30 Zeichen
- 29. Spiel Wort gleiches Wort mit zusätzlichen Zeichen in sed
- 30. Was bedeutet das Zeichen "~" in PHP regex?
Ein "Wort"? Was ist Ihre Eingabe und erwartete Ausgabe? Hinweis ''/(.) \ 1 {3}/'' entspricht 4 identischen Zeichen am Ende. Um 3 identische aufeinanderfolgende Zeichen zu finden, benötigen Sie ''/ (.) \ 1 {2} /''. Probieren Sie '(\ w) \ 1 {2}', wenn Sie nur Wortzeichen (Buchstaben, Ziffern oder '_') suchen möchten. –
Müssen die 3 Zeichen zusammenhängend sein? –
Wenn du drei _oder mehr Male_ willst, musst du '{3,}' anstelle von '{3}' verwenden (das entspricht nur drei genauen Zeiten) –