Ich habe den regulären Ausdruck '!\d!'
innerhalb der PHP preg_match
Funktion gesehen. Was zur Hölle ist das?Regulärer Ausdruck mit Ausrufezeichen auf beiden Seiten ('! D!')
Antwort
Vom PHP PCRE docs:
Wenn die PCRE-Funktionen verwenden, ist es erforderlich, dass das Muster durch Trennzeichen eingeschlossen ist. Ein Begrenzer kann ein beliebiger nicht alphanumerischer Nicht-Backslash-Zeichen sein.
In diesem Fall wird einfach !
als Trennzeichen verwendet. Häufig wird es verwendet, wenn Sie das normale Trennzeichen innerhalb der Regex selbst verwenden möchten, ohne es zu entfliehen. In diesem Fall nicht wirklich notwendig, da der Rest der Regex einfach \d
ist, aber es ist praktisch für Dinge wie die Überprüfung, dass ein Pfad mehr als drei Verzeichnisebenen enthält. Sie können entweder verwenden:
/\/.*\/.*\/.*\/ blah blah blah/
oder:
!/.*/.*/.*/ blah blah blah !
Jetzt haben sie gründlich nicht getestet und kann nicht vollständig funktionieren wie beworben, aber man sollte die allgemeine Idee erneut die minimale Entkommen bekommen erforderlich.
Ein anderes Beispiel (von der Seite, die mit oben verknüpft ist) ist zu überprüfen, ob eine Zeichenfolge mit dem http://
Marker beginnt. Einer dieser beiden:
/^http:\/\//
!^http://!
würde ausreichen, aber die zweite ist leichter zu verstehen.
Warum nicht einfach '\ d' schreiben? – Graduate
Nun, es funktioniert nicht, ich überprüfte ... – Graduate
@Graduate, wollten Sie wissen, was die Regex bedeutete. Ich habe auch einen Grund angegeben, warum alternative Trennzeichen nützlich sein können, mit der vollständigen Offenlegung, dass es möglicherweise behoben werden muss. Die Absicht war einfach zu zeigen, wie viel _cleaner_ eine Regex sein kann, indem man alternative Delimiter verwendet, ich habe nicht vorgeschlagen, dass Sie diese Samples verwenden sollten (zumindest nicht ohne Debuggen und Fixieren des "blah blah blah" -Bits). – paxdiablo
!
wird als Trennzeichen verwendet, \d
entspricht der einzelnen Ziffer.
Es ist die gleiche wie /[0-9]/
Danke, ich dachte, du musst immer das Zeichen "/" verwenden. Ich wusste nicht, dass ich es ersetzen kann. – Graduate
- 1. Regulärer Ausdruck zum Anpassen "|"
- 2. JavaScript regulärer Ausdruck (Seitenbereichsüberprüfung)
- 3. Regulärer Ausdruck mit preg_match
- 4. Regulärer Ausdruck mit Dateiname
- 5. Übereinstimmung mit regulärer Ausdruck
- 6. Regulärer Ausdruck Mit Ausnahme dieser Zeichen
- 7. Regulärer Ausdruck
- 8. TCL Regulärer Ausdruck
- 9. Regulärer Ausdruck Fehlermeldung
- 10. Regulärer Ausdruck
- 11. Regulärer Ausdruck Gruppierung Ausgabe
- 12. Python regulärer Ausdruck?
- 13. Java regulärer Ausdruck übereinstimmen
- 14. Regulärer Ausdruck Basierend auf Bedingung in Java
- 15. Regulärer Ausdruck gegenüber
- 16. Regulärer Ausdruck für Preisvalidierung
- 17. Regulärer Ausdruck Verwirrung
- 18. AngularJs Texteingabefeld regulärer Ausdruck
- 19. Python "beitreten" auf beiden Seiten von Strings?
- 20. regulärer Ausdruck funktioniert nicht mit Javascript
- 21. Regulärer Ausdruck für Dateierweiterung
- 22. Javascript: regulärer Ausdruck und .test
- 23. Regulärer Ausdruck Parse Double
- 24. Regulärer Ausdruck gawk passend
- 25. Python regulärer Ausdruck mit [: numeric:]
- 26. Regulärer Ausdruck Verwendung mit ls
- 27. Regulärer Ausdruck mit einigen Grundregeln
- 28. regulärer Ausdruck für „def“
- 29. Bedingter JavaScript-Regulärer Ausdruck
- 30. Float Bilder auf beiden Seiten des Textes
Was mit dem downvotes ist? Es könnte besser formuliert sein, aber ich denke, das ist eine vernünftige Frage. Das Suchen nach Interpunktion ist grundsätzlich unmöglich und es sind drei Klicks von der "preg_match" -Doc-Seite zur PCRE-Regex-Delimiter-Doc-Seite. Und du musst wissen, dass du nach "regex delimiter" suchst, aber dann kennst du schon die Antwort ... – verdesmarald
Ich habe PHP schon seit Jahren programmiert und das habe ich noch nie gesehen! als Delimeter verwendet! Ich habe gegoogelt und diese sehr hilfreiche Frage gefunden. P.S. Ich vermute, dass es nicht als Trennzeichen verwendet wird, da es weniger lesbaren Code enthält. Auf den ersten Blick interpretiere ich das Ausrufezeichen als "nicht" oder "negative Übereinstimmung", viele andere glaube ich auch, deshalb vermeiden sie es zugunsten der Lesbarkeit. –