Gibt es eine einfache Möglichkeit, den Leerraum in einer Zielzeichenfolge bei der Suche nach Übereinstimmungen mit einem regulären Ausdrucksmuster zu ignorieren? Wenn ich zum Beispiel nach "Katzen" suche, möchte ich, dass "c ats" oder "ca ts" übereinstimmen. Ich kann den Leerraum nicht vorher ausstreichen, da ich den Anfangs- und Endindex der Übereinstimmung (einschließlich beliebiger Leerzeichen) finden muss, um diese Übereinstimmung hervorzuheben, und alle Leerzeichen müssen zu Formatierungszwecken vorhanden sein.Wie ignoriert man Whitespace in einer Zeichenfolge für einen regulären Ausdruck?
Antwort
Sie können optionale Leerzeichen \s*
zwischen alle anderen Zeichen in Ihrem Regex stecken. Obwohl es gewährt wird, wird es ein bisschen lang werden.
/cats/
->/c\s*a\s*t\s*s/
Sie \s*
in Ihrem Suchbegriff dazwischen jedes Zeichen setzen könnte also, wenn Sie für Katze gesucht haben würden Sie c\s*a\s*t\s*s\s*s
Es ist lange verwenden, aber man konnte die Zeichenfolge dynamisch natürlich bauen.
Sie können es hier arbeiten sehen: http://www.rubular.com/r/zzWwvppSpE
Wenn Sie nur Räume ermöglichen, dann
\bc *a *t *s\b
es tun sollten. , Damit auch Tabs
\bc[ \t]*a[ \t]*t[ \t]*s\b
Entfernen Sie die \b
Anker verwenden, wenn Sie wollen auch cats
innerhalb von Worten wie bobcats
oder catsup
zu finden.
Steven Kommentar zu Antwort Sam Dufel der
Danke, Adressierung klingt wie das ist der Weg zu gehen. Aber ich habe gerade gemerkt, dass ich nur die optionalen Whitespace-Zeichen möchte, wenn sie einem Zeilenumbruch folgen. So sollten zum Beispiel "c \ n ats" oder "ca \ n ts" übereinstimmen. Aber würde "c ats" nicht übereinstimmen wollen, wenn es keine neue Zeile gibt. Irgendwelche Ideen, wie das gemacht werden könnte?
Dies sollte den Trick:
/c(?:\n\s*)?a(?:\n\s*)?t(?:\n\s*)?s/
Siehe this page für alle verschiedenen Variationen von 'Katzen', dass dieser übereinstimmt.
Sie können dies auch mit conditionals lösen, aber sie werden nicht in der JavaScript-Variante von Regex unterstützt.
So sehr hässlich. Es muss einen besseren Weg geben. –
Sie könnten es in JS-Syntax lesbarer machen (obwohl die Technik in anderen Sprachen funktionieren würde) mit: 'new RegExp ('cats'.split (' '). Join (' (?: \ N \ s *)? ')) ' – brianary
- 1. Java regulären Ausdruck Zeichen in einer Zeichenfolge
- 2. Javascript: Konvertieren einer Zeichenfolge in regulären Ausdruck
- 3. Wie man einen regulären Ausdruck schreiben
- 4. Hilfe für einen regulären Ausdruck
- 5. Wie man einen regulären Ausdruck bekommen
- 6. Whitespace-Zeichenfolge zu Whitespace
- 7. Wie man einen regulären Ausdruck für das Web schreiben
- 8. wie einen regulären Ausdruck schreiben
- 9. Programmgesteuert leiten Sie einen regulären Ausdruck von einer Zeichenfolge ab
- 10. Konvertiere einen String in einen regulären Ausdruck
- 11. Wie verwendet man regulären Ausdruck, um einen Teilzeichenfolgewert zu ersetzen?
- 12. Wie findet man einen String, der^im regulären Ausdruck enthält?
- 13. Wie schreibt man einen regulären PCRE-Ausdruck, um einen String mit anderem Inhalt zu finden?
- 14. Wie man einen regulären Ausdruck konvertieren von OR XOR
- 15. Benötigen Sie einen regulären Ausdruck, um Zeichenfolge in JavaScript
- 16. wie einen regulären Ausdruck zu schreiben, für die Herstellung einer csv aus Zeichenfolge zusätzliche Kommas entfernen
- 17. Wie man einen regulären Ausdruck in preg_match_all "und"
- 18. regulärer Ausdruck "enthält" einen anderen regulären Ausdruck
- 19. einen regulären Ausdruck für nicht mit etwas
- 20. Wie schreibe ich einen regulären Ausdruck für dieses Szenario?
- 21. regulären Ausdruck für Passwort
- 22. Groovy: Escape einen willkürlichen (unbekannten) regulären Ausdruck
- 23. Erstellen Sie einen regulären Ausdruck aus der Zeichenfolge
- 24. Wie Whitespace-insensitive Modus des regulären Ausdrucks in PHP aktivieren?
- 25. Entpacken Sie einen regulären Ausdruck Übereinstimmung
- 26. Die Übereinstimmung einer Zeichenfolge mit einem regulären Ausdruck ergibt null
- 27. Wie validiere ich einen regulären Ausdruck?
- 28. Wie wird der letzte Punkt in einer Zeichenfolge durch einen regulären Ausdruck ersetzt?
- 29. regulären Ausdruck
- 30. Wie generiert man einen regulären Ausdruck, der am Anfang oder am Ende keine bestimmte Zeichenfolge enthält?
Danke, klingt wie das ist der Weg zu gehen. Aber ich habe gerade gemerkt, dass ich nur die optionalen Whitespace-Zeichen möchte, wenn sie einem Zeilenumbruch folgen. So sollten zum Beispiel "c \ n ats" oder "ca \ n ts" übereinstimmen. Aber würde "c ats" nicht übereinstimmen wollen, wenn es keine neue Zeile gibt. Irgendwelche Ideen, wie das gemacht werden könnte? – Steven