Gibt es eine einfache Möglichkeit, den Leerraum in einer Zielzeichenfolge bei der Suche nach Übereinstimmungen mithilfe eines Musters mit regulären Ausdrücken zu ignorieren? Wenn ich beispielsweise nach "Katzen" suche, möchte ich, dass "c ats" oder "ca ts" übereinstimmen. Ich kann das Leerzeichen nicht vorher entfernen, da ich den Anfangs- und Endindex der Übereinstimmung (einschließlich aller Leerzeichen) finden muss, um diese Übereinstimmung hervorzuheben, und jedes Leerzeichen muss für Formatierungszwecke vorhanden sein.
regex
whitespace
Steven
quelle
quelle
^([a-z]\s*)+$
Adressierung von Stevens Kommentar zu Sam Dufels Antwort
Dies sollte den Trick tun:
Auf dieser Seite finden Sie alle verschiedenen Variationen von 'Katzen', die dazu passen.
Sie können dies auch mithilfe von Bedingungen lösen , diese werden jedoch in der Javascript-Version von Regex nicht unterstützt.
quelle
new RegExp('cats'.split('').join('(?:\n\s*)?'))
Während die akzeptierte Antwort technisch korrekt ist, besteht ein praktischerer Ansatz, wenn möglich, darin, Leerzeichen sowohl aus dem regulären Ausdruck als auch aus der Suchzeichenfolge zu entfernen.
Wenn Sie nach "meinen Katzen" suchen möchten, anstatt:
Mach einfach:
Warnung: Sie können dies für den regulären Ausdruck nicht automatisieren, indem Sie einfach alle Leerzeichen durch leere Zeichenfolgen ersetzen, da diese in einer Negation auftreten oder Ihren regulären Ausdruck auf andere Weise ungültig machen können.
quelle
Sie können
\s*
zwischen jedes Zeichen in Ihrer Suchzeichenfolge setzen, wenn Sie also nach einer Katze suchen, die Sie verwenden würdenc\s*a\s*t\s*s\s*s
Es ist lang, aber Sie können den String natürlich dynamisch erstellen.
Sie können es hier sehen: http://www.rubular.com/r/zzWwvppSpE
quelle
Wenn Sie nur Leerzeichen zulassen möchten, dann
Sollte es tun. Verwenden Sie, um auch Registerkarten zuzulassen
Entfernen Sie die
\b
Anker, wenn Sie auchcats
in Wörtern wiebobcats
oder finden möchtencatsup
.quelle
Dieser Ansatz kann verwendet werden, um dies zu automatisieren (die folgende beispielhafte Lösung ist in Python, obwohl sie offensichtlich in jede Sprache portiert werden kann):
Sie können das Leerzeichen vorher entfernen UND die Positionen von Nicht-Leerzeichen speichern, damit Sie sie später verwenden können, um die übereinstimmenden Zeichenfolgengrenzpositionen in der Originalzeichenfolge wie folgt zu ermitteln:
Wenn Sie weiter gehen möchten, können Sie das Übereinstimmungsobjekt erstellen und stattdessen zurückgeben, sodass die Verwendung dieses Hilfsprogramms praktischer ist.
Und die Leistung dieser Funktion kann natürlich auch optimiert werden. Dieses Beispiel soll nur den Weg zu einer Lösung zeigen.
quelle