Ich suche das Muster (.*)\\1
auf dem Text blabl
mit regexec()
. Ich bekomme erfolgreiche aber leere Matches in regmatch_t
Strukturen. Was genau wurde abgestimmt?Warum bekomme ich erfolgreiche, aber leere Regex-Treffer?
Antwort
Die Regex. * Kann erfolgreich eine Zeichenfolge mit null Zeichen oder das Nichts, das zwischen benachbarten Zeichen auftritt, übereinstimmen.
So entspricht Ihr Muster null Zeichen in den Parens, und dann folgende Nullzeichen unmittelbar danach.
Wenn also Ihre Regex /f(.*)\1/
war, würde die Zeichenfolge "foo" zwischen dem "f" und dem ersten "o" übereinstimmen.
Sie könnten versuchen, .+
anstelle von .*
zu verwenden, da dies einer oder mehreren anstelle von null oder mehr entspricht. (Mit. + Sollten Sie die 'oo' in 'foo' übereinstimmen)
\ 1 ist die Rückreferenz in der Regel für den Ersatz später oder wenn Sie versuchen, Ihre Regex verfeinern, indem Sie eine Übereinstimmung innerhalb einer Übereinstimmung erhalten. Sie sollten nur (. *) Verwenden, dies wird Ihnen die gewünschten Resultate geben und automatisch die Rückreferenznummer 1 erhalten. Ich bin kein Regex-Experte, aber das sind meine Gedanken, die auf meinem begrenzten Wissen basieren.
Als Nebenbemerkung, ich immer wieder auf RegexBuddy, wenn Sie versuchen zu sehen, was wirklich passiert.
Die Absicht könnte sein, eine Zeichenfolge zu finden, die zweimal hintereinander im Text angezeigt wurde. Dafür würde das \ 1 funktionieren. – Mnebuerquo
Das macht Sinn. Meine begrenzten Kenntnisse von Regex zeigen sich noch einmal! –
\ 1 ist die "re-match" Anweisung. Die Frage ist, haben Sie sofort wieder Match wollen (zB BLABLA)
/(.+)\1/
oder höher (zB BLA ahem BLA)
/(.+).*\1/
- 1. curl: warum bekomme ich leere antwort?
- 2. Wie bekomme ich den Iterator für eine erfolgreiche binary_search?
- 3. Warum bekomme ich leere Ansicht unter Fortschrittsbalken in Recyclerview Paginierung?
- 4. Warum bekomme ich leere Seiten mit Capybara-webkit, aber nicht mit dem Standard (Nicht-JS) -Treiber
- 5. Warum bekomme ich leere Ergebnisse in meiner RegExp?
- 6. Warum kann ich mit PeekMessage() keine erfolgreiche Nachrichtenschleife erstellen?
- 7. Erfolgreiche Antwort von Super Stack API aber Konto nicht geladen
- 8. Warum bekomme ich "MySQL läuft nicht, aber Sperre existiert"?
- 9. Subsetting auf alle, aber leere grep gibt leere Vektor
- 10. Warum bekomme ich NSUnkownKeyException?
- 11. Warum bekomme ich SecurityTokenSignatureKeyNotFoundException?
- 12. Ich versuche, nächste Zeile auf aktualisieren anzuzeigen, aber ich bekomme eine leere Seite
- 13. Warum bekomme ich PingException?
- 14. Laden dataTable. Erfolgreiche AJAX-Anfrage, aber keine Daten sichtbar
- 15. Warum bekomme ich Deadlock
- 16. Warum bekomme ich NoSuchMethodException?
- 17. Vowpal Wabbit inverted_hash Option erzeugt leere Ausgabe, aber warum?
- 18. Warum erhalte ich eine leere E-Mail?
- 19. Warum bekomme ich eine Gleitkommaausnahme?
- 20. Warum bekomme ich 0 Ergebnisse
- 21. Warum bekomme ich Zlib :: DataError?
- 22. Warum bekomme ich "disconnected framework"?
- 23. Warum bekomme ich "undefinierten Index"?
- 24. Warum bekomme ich ein Leck?
- 25. Warum bekomme ich java.lang.AbstractMethodError Fehler?
- 26. Warum bekomme ich diese System.NullReferenceException?
- 27. Warum bekomme ich Core Dump?
- 28. Warum bekomme ich null Ergebnisse?
- 29. Warum bekomme ich ArrayIndexOutOfBounds Ausnahme?
- 30. Warum bekomme ich eine CancelledKeyException?
Eigentlich/f (. *) \ 1/entspricht "foo", weil der Stern gierig ist. Aber es wird auch nur 'f' passen. –