2010-12-27 11 views

Respuesta

61

Un límite de palabra (\b) es un partido de anchura cero que puede coincidir con:

  • Entre un carácter de palabra (\w) y un carácter no-palabra (\W) o
  • Entre un carácter de palabra y el comienzo o el final de la cadena.

En la definición de Javascript \w es [A-Za-z0-9_] y \W es otra cosa.

La versión negada de \b, escrito \B, es un partido de anchura cero cuando el anterior no espera. Por lo tanto, puede coincidir:

  • Entre dos caracteres de palabra.
  • Entre dos caracteres que no son palabras.
  • Entre un carácter sin palabra y el inicio o el final de la cadena.
  • La cadena vacía.

Por ejemplo, si la cadena es "Hello, world!" luego \b partidos en los siguientes lugares:

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

Y \B coincide con aquellos lugares donde \b no coincide:

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

Agradable. En mi experiencia, * explicar * los límites de palabras es considerablemente más difícil que * usar * ellos. –

+2

No he visto una explicación tan lúcida de los límites de palabras antes. ¡Muy buena! – Salil

2

El propósito básico de non-word-boundary ha creado una expresión regular que dice:

  • si estamos al inicio/final de un word char (\w = [a-zA-Z0-9_]) asegurarse de que el carácter anterior/siguiente es también un word char,

    por ejemplo: "a\B." ~ "a\w":

    "ab", "a4" , "a_", ... pero no "a ", "a."

  • si estamos al principio/final de non-word char (\W = [^a-zA-Z0-9_]) asegurarse de que el carácter anterior/siguiente es también un non-word char,

    ej .: "-\B." ~ "-\W":

    "-.", "- ", "--", ...pero no "-a", "-1"

Para word-boundary es similar, pero en lugar de asegurarse de que los caracteres adyacentes son de la misma clase (word char/non-word car) tienen que ser diferentes, de ahí el nombre word's boundary.

Cuestiones relacionadas