Question

Quels sont les limites non-mot dans regex (\ B), par rapport à mot-frontière?

Était-ce utile?

La solution

Une limite de mot (\b) est d'une largeur de zéro qui peut correspondre:

  • Entre un caractère de mot (\w) et un caractère non-mot (\W) ou
  • Entre un caractère de mot et le début ou la fin de la chaîne.

Dans la définition Javascript de \w est [A-Za-z0-9_] et \W est autre chose.

La version Négation de \b, \B écrit, est un match de largeur zéro lorsque le ci-dessus pas attente. Par conséquent, il peut correspondre à:

  • Entre deux caractères de mot.
  • Entre deux caractères non-mot.
  • Entre un caractère non-mot et le début ou la fin de la chaîne.
  • La chaîne vide.

Par exemple, si la chaîne est alors "Hello, world!" matchs \b dans les endroits suivants:

 H e l l o ,   w o r l d !
^         ^   ^         ^ 

Et \B correspond à ces endroits où \b ne correspond pas à:

 H e l l o ,   w o r l d !
  ^ ^ ^ ^   ^   ^ ^ ^ ^   ^

Autres conseils

L'objectif fondamental de non-word-boundary est de créer une regex qui dit:

  • si nous sommes au début / fin d'une word char (\w = [a-zA-Z0-9_]) assurez-vous que le caractère précédent / suivant est aussi un word char,

    .: "a\B." ~ par exemple "a\w":

    "ab", "a4", "a_", ... mais pas "a ", "a."

  • si nous sommes au début / fin d'une non-word char (\W = [^a-zA-Z0-9_]) assurez-vous que le caractère précédent / suivant est aussi un non-word char,

    .: "-\B." ~ par exemple "-\W":

    "-.", "- ", "--", ... mais pas "-a", "-1"

Pour word-boundary il est similaire, mais au lieu de faire en sorte que les caractères adjacents sont de la même classe (word char / non-word car) dont ils ont besoin d'être différent, d'où le nom word's boundary.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top