Je n'arrive pas à comprendre le motif de regex pour assortir des cordes uniquement s'il ne contient pas d'espace. Par exemple doit renvoyer doit renvoyer le matchdata avec la chaîne entière. Quelqu'un peut-il suggérer une solution pour ce qui précède? P> p> nil code> mais p>
7 Réponses :
>> "this has whitespace".match(/^\S*$/) => nil >> "nospaces".match(/^\S*$/) => #<MatchData "nospaces"> ^ = Beginning of string\S = non-whitespace character, * = 0 or more$ = end of string
dans Ruby, je pense que ce serait
/^\S*$/
Ahh! Il manquait la fin de la ligne d'ancrage à la fin. À votre santé!
@Bart, note que \ n code> et \ r code> sont également considérés comme des caractères d'espace blanc.
Vous voudrez peut-être / \ a \ s * \ z / code> au lieu de cela, car cela correspondra au début et à la fin de la chaîne plutôt que le début et la fin des lignes. "LINEONE \ NLINETWO" code> correspondant à / ^ \ s * $ / code> retournera "LineOne" code>
Je n'aurai pas à vous soucier des chaînes multilignes dans mon application, mais c'est un excellent point - merci.
Qu'en est-il / ^ \ s * $ / m, où M tourne un mode multiligne? :)
Cela m'a sauvé une jolie expression régulière étrange pour PHP et JavaScript. Dans ce cas, je devais tout faire correspondre si cela n'avait pas eu de blousiastes ou ne correspondait que les premiers 1-3 caractères non-espaces. C'est le résultat: / ^ (?: (\ S {1,5}) \ s * | (. {1,3}). *) $ / Code>. C'est moche, je sais. Et il nécessite la chaîne de remplacement '$ 1 $ 2' code>, mais cela fonctionne bien pour le but!
"nowhitespace".match(/^[^\s]*$/)
Vous voulez:
/^\S*$/
Je ne sais pas que vous pouvez le faire dans un motif, mais vous pouvez faire quelque chose comme:
+1 Pour penser à la question différemment ... La question pourrait être interprétée comme une chaîne contenant un modèle «X» tant que la chaîne n'inclut pas les espaces ...
str.match (/ ^ \ s * quelque_pattern \ s * $ /) code> p>
Vous pouvez toujours rechercher pour les espaces em>, an, puis nier le résultat:
essayez-vous de déterminer si une chaîne contient des espaces blancheurs ou si une chaîne contient un certain motif, mais seulement s'il n'y a pas de blancheur?
Fondamentalement, je veux que la correspondance revienne nul si la chaîne contient des espaces blanche.