Différence entre les méta caractères de l’expression régulière \ w et \ b

Quelqu’un peut-il expliquer la différence entre les méta-caractères de l’expression régulière \w et \b ?

Je crois comprendre que ces deux méta-caractères sont utilisés pour les limites de mots. En dehors de cela, quel méta-caractère est efficace pour un contenu multilingue?

Le métacaractère \b est une ancre comme le caret et le signe dollar. Il correspond à une position appelée “limite de mot” . Cette correspondance est de longueur zéro.

Il y a trois positions différentes qui qualifient de limites de mots:

  • Avant le premier caractère de la chaîne, si le premier caractère est un caractère de mot.
  • Après le dernier caractère de la chaîne, si le dernier caractère est un caractère de mot.
  • Entre deux caractères dans la chaîne, l’un est un caractère de mot et l’autre n’est pas un caractère de mot.

Simplement mettre: \b vous permet d’effectuer une recherche “mots entiers uniquement” en utilisant une expression régulière sous la forme de \bword\b . Un “caractère de mot” est un caractère qui peut être utilisé pour former des mots. Tous les caractères qui ne sont pas des “caractères verbaux” sont des “caractères non verbaux” .

Dans tous les goûts, les caractères [a-zA-Z0-9_] sont des caractères de mots. Celles-ci correspondent également à la classe de caractères abrégés \w . Les saveurs indiquant “ascii” pour les limites de mots dans la comparaison de saveurs ne reconnaissent que celles-ci en tant que caractères de mots.

\w signifie “caractère de mot” , généralement [A-Za-z0-9_] . Notez l’inclusion du trait de soulignement et des chiffres.

\B est la version négative de \b . \B correspond à chaque position où \b n’est pas. En effet, \B correspond à n’importe quelle position entre deux caractères de mot ainsi qu’à n’importe quelle position entre deux caractères non-mots.

\W est l’abréviation de [^\w] , la version négative de \w .

\w correspond à un caractère de mot. \b est une correspondance de largeur zéro qui correspond à un caractère de position qui a un caractère de mot d’un côté et quelque chose qui n’est pas un caractère de mot de l’autre. (Les exemples de choses qui ne sont pas des caractères de mots incluent les espaces, le début et la fin de la chaîne, etc.)

\w correspond à a , b , c , d , e et f dans "abc def"
\b correspond à la position (zéro largeur) avant a , après c , avant d et après f dans "abc def"

Voir: http://www.regular-expressions.info/reference.html/

@Mahender, vous avez probablement fait la différence entre \W (au lieu de \w ) et \b . Sinon, je serais d’accord avec @BoltClock et @jwismar ci-dessus. Sinon, continuez à lire.

\W correspondrait à n’importe quel caractère autre qu’un mot et il est donc facile d’essayer de l’utiliser pour faire correspondre les limites d’un mot. Le problème est que cela ne correspondra pas au début ou à la fin d’une ligne. \b est plus adapté à la correspondance des limites de mots car elle correspond également au début ou à la fin d’une ligne. Grosso modo (les utilisateurs plus expérimentés peuvent me corriger ici) \b peut être considéré comme (\W|^|$) . [Edit: comme @ Ωmega le mentionne ci-dessous, \b est une correspondance de longueur nulle donc (\W|^|$) n’est pas ssortingctement correct, mais j’espère que cela aide à expliquer le diff]

Exemple rapide: Pour la chaîne Hello World Hello_ .+\W correspondrait à Hello_ (avec l’espace) mais ne correspondrait pas à World . .+\b correspondrait à la fois à Hello et à World .

 \b < = this is a word boundary. 

Correspond à une position suivie d'un caractère de mot mais non précédée d'un caractère de mot ou précédée d'un caractère de mot mais non suivie d'un caractère de mot.

 \w < = stands for "word character". 

Il correspond toujours aux caractères ASCII [A-Za-z0-9_]

Y a-t-il quelque chose de spécifique à essayer?

Quelques sites Web utiles pour les débutants ou juste pour vous moquer de votre appétit.

J'ai trouvé ce livre très utile:

  • Maîsortingser les expressions régulières par Jeffrey EF Friedl

\w n’est pas une limite de mot, il correspond à n’importe quel caractère de mot, y compris les caractères de soulignement: [a-zA-Z0-9_] . \b est une limite de mot, c’est-à-dire qu’elle correspond à la position entre un mot et un caractère non alphanumérique: \W ou [^\w] .

Ces implémentations peuvent varier d’une langue à l’autre.