Regex: nicht zu entsprechen, wenn der string Leerzeichen enthält
Ich kann nicht scheinen, um herauszufinden, die regex-Muster für Zeichenfolgen nur, wenn es keine Leerzeichen enthalten darf. Zum Beispiel
"this has whitespace".match(/some_pattern/)
zurückkehren sollte nil
aber
"nowhitespace".match(/some_pattern/)
sollte den MatchData mit der gesamten Zeichenfolge. Kann jemand empfehlen, eine Lösung für die oben genannten?
sind Sie versuchen zu bestimmen, ob eine Zeichenfolge Leerzeichen enthält, oder enthält eine Zeichenfolge ein bestimmtes Muster aber NUR, wenn es keine Leerzeichen?
Im Grunde möchte ich match Rückgabe nil, wenn der string Leerzeichen enthält .
Im Grunde möchte ich match Rückgabe nil, wenn der string Leerzeichen enthält .
InformationsquelleAutor Bart Jedrocha | 2010-01-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ruby, ich denke, es wäre
Bedeutet dies "starten, eine beliebige Anzahl von nicht-whitespace-Zeichen, Ende"
beachten Sie, dass
\n
und\r
sind auch als white-space-Zeichen.Möchten Sie vielleicht
/\A\S*\Z/
statt, da dieses match der Beginn und das Ende der Zeichenfolge, sondern als Beginn und Ende von Zeilen."lineone\nlinetwo"
abgestimmt mit/^\S*$/
zurück"lineone"
Ich nicht sorgen über multi-line strings in meiner Anwendung, aber das ist ein sehr guter Punkt - danke.
Was ist /^\S*$/m, wobei m sich auf einem multiline-Modus? 🙂
InformationsquelleAutor Danny Roberts
Konnte man immer suchen für Leerzeichen, dann negiert das Ergebnis:
InformationsquelleAutor Justin Poliey
^
= Anfang der Zeichenkette\S = nicht-whitespace-Zeichen,
*
= 0 oder mehr$
= end of stringInformationsquelleAutor Amber
Nicht sicher, können Sie es in ein Muster, aber Sie können etwas tun:
InformationsquelleAutor mletterle
InformationsquelleAutor John Weldon
Du willst:
Sagt "match am Anfang der Zeichenfolge, dann null oder mehr nicht-whitespace-Zeichen, dann das Ende der Schnur." Die Konvention für das pre-defined character-Klassen ist, dass einem Kleinbuchstaben bezieht sich auf eine Klasse, während Sie einen Großbuchstaben bezieht sich auf seine negation. So
\s
bezieht sich auf whitespace-Zeichen, während\S
bezieht sich auf nicht-whitespace-Zeichen.InformationsquelleAutor Brian Campbell
str.match(/^\S*some_pattern\S*$/)
InformationsquelleAutor kejadlen