47 votes

Quelle est l'utilité de la [ \b ] backspace regex ?

[\b] correspond apparemment à un caractère de retour en arrière. Je n'arrive pas à comprendre comment une chaîne de caractères peut contenir un caractère d'espacement arrière. Quelqu'un peut-il me donner un exemple concret de l'utilisation de cette fonction ? Merci beaucoup.

47voto

Martin Büttner Points 26511

Bien que tous les autres aient raison en général (que \b est une limite de mot), \b hace signifie le retour arrière à l'intérieur des classes de caractères :

[\b]

Cela correspondra en effet à un caractère de retour en arrière. Il s'agit simplement d'un caractère de contrôle ASCII qui peut apparaître dans le texte (code ASCII 8, ou 10 en octal). Je suppose qu'il est surtout utilisé pour des raisons d'héritage, pour ajouter des marques diacritiques (par exemple, vous pourriez faire a , backspace, ´ pour obtenir á ). Aujourd'hui, ils ont été remplacés pour la plupart par des signes de combinaison Unicode.

Comment une chaîne de caractères contenant un retour arrière sera finalement regardez dépend du logiciel qui le restitue. Les consoles continueront probablement à déplacer le curseur en arrière et à écraser ce qui était là si le retour en arrière est suivi de nouveaux caractères. Pour voir cela, lancez une console de script interactive (comme node.js si vous voulez l'essayer en JavaScript), et exécutez

> console.log("abc\b\bdef")
adef

Notez que, si vous aviez omis def tu auras juste abc parce que le retour en arrière lui-même n'efface rien. Il ne fait que déplacer le curseur en arrière.

D'autre part, votre navigateur peut l'ignorer dans un champ de saisie. Par exemple, regardez un Convertisseur Unicode saisissez l'entrée JavaScript abc\b\bdef dans l'entrée en bas à gauche, cliquez sur "convertir", et la sortie "Caractères" n'aura pas les caractères suivants bc effacé.

D'ailleurs \b Le fait qu'il s'agisse d'un retour arrière dans les classes de caractères n'est pas propre à JavaScript, mais est interprété de cette façon dans la plupart des saveurs de regex.

Pour en savoir plus :

12voto

p.s.w.g Points 81433

Dans le contexte d'une expression régulière (en dehors d'une classe de caractères) \b ne signifie pas "retour en arrière", mais "limite du mot". Il y a beaucoup d'utilisations possibles . Par exemple,

/\bword\b/

correspondra à some word mais pas someword .

Comme m.butter vous fait remarquer peut l'utiliser pour correspondre à un caractère de retour en arrière, si vous le placez dans une classe de caractères. Par exemple :

var input = "this is a \btest.";
/[\b]/.test(input); // true

1voto

Zeek2 Points 125

Exemple concret : nous passons \b entre clients (via un serveur hébergé) en utilisant notre propre protocole pour permettre aux utilisateurs de revenir en arrière sur le texte qu'ils ont déjà envoyé. Dans un type de client (celui-ci est basé sur un navigateur web mais les autres ne le sont pas), je vérifie si la touche de retour en arrière est frappée (e.which==8 // Ref. https://api.jquery.com/keydown/ ) et envoyer ' \b Les autres clients s'en chargent (éventuellement automatiquement). Lorsque mon client web reçoit \b alors mon code doit le gérer de manière appropriée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X