J'ai besoin d'aide. Je cherche une regex qui correspondrait au dernier caractère spatial d'une chaîne. J'utilise JavaScript et ASP classique.
J'ai une longue chaîne de texte que je coupe à 100 caractères. Je voudrais retirer le dernier caractère pour éviter une erreur d'orthographe si la garniture coupe un mot en raison de la limite de 100 caractères. P>
regex.replace(/[ ]$.*?/ig, '');
5 Réponses :
Le regex /^.+ [^] * $ / code> ne correspondra que le dernier espace d'une ligne. P>
Non, cela correspondra à la ligne entière, plus ou moins.
Oui, mais cela précise pour le dernier espace, désolé, je n'étais pas spécifique. Un groupe de capture bien placé vous donnera ce que vous voulez basé sur cela.
Essayez un Assertion Lookahead :
/\s(?=\S*$)/
@Gumbo: Est-ce que je manque quelque chose ou est-ce inutilement compliqué?
@ DCLOWD9901: C'est juste une pratique. Plus vous l'utilisez le plus souvent, plus vous obtenez.
@Tomalak: Eh bien, cela correspond exactement au dernier caractère spatial d'une chaîne et rien d'autre.
Ah, j'ai manqué quelque chose d'essentiel, alors. :) beau travail, +1.
Merci @gumbo, grande regex
ce serait caractère d'espace ( Notez que la mise en place de l'espace dans une classe de caractères est inutile, sauf si vous souhaitez correspondre à plus qu'un caractère d'espace, par exemple des onglets correspondre vraiment à la dernier espace em> uniquement, utilisez Lorsque la regex signifie: "Au moins un espace, et tout caractères non-blancs après elle ( Ceci ne peut correspondre que le dernier bit d'une ligne après le dernier espace. En tant qu'effet secondaire, la chaîne est coupée à la fin. P> P> code>), au moins une fois (
+ code>), à la fin de la ligne (
$ code>) p>
[\ t] code>. p>
/ $ / code> p>
\ s * code>), à la fin de la ligne (
$ code>). ". P>
Cela vous aide à faire correspondre tous les caractères d'une chaîne après le dernier espace. Comment puis-je utiliser ceci pour correspondre à tous les caractères d'une chaîne avant le dernier espace? Merci!
De ma compréhension, vous devez supprimer le dernier espace et tout après cela, non?
str = str.replace(/\s+\S*$/, "")
Parfait, merci stéréofrogrog exactement ce dont j'avais besoin
Heureux d'entendre ça marche, mais gumbo a raison - la prochaine fois, essayez d'être plus précis
à l'aide de "classique" res, ce que vous voudriez serait Notez également que de toute façon, si un mot arrive à se terminer exactement au 100e caractère, cela correspondra à l'espace avant de cela. Vous allez donc supprimer ce dernier mot. Si vous voulez éviter cela, vous voulez (probablement) regarder le premier caractère que vous coupez, et s'il s'agit de l'espace blanc, ne vous enlève rien du tampon. P> "[^] * $" code> - c'est-à-dire un caractère d'espace suivi d'un nombre arbitraire de caractères non spatiaux suivis de la fin. de la ligne. Les "caractères non-espaces" peuvent ou non adapté à votre définition d'un "mot", par exemple, cela vous empêchera également de couper un nombre au milieu. Si vous souhaitez limiter un "mot" à contenir des lettres, vous pouvez utiliser:
"[^ a-za-z] * $" code> à la place. P>
Peut-être auriez-vous dû être plus précis sur ce que vous recherchez. "Faites correspondre tout depuis le dernier espace jusqu'à la fin" irait mieux.