regex - test - Diferencia entre / b y / B en expresiones regulares
regexp javascript (7)
Estoy leyendo un libro sobre expresión regular y encontré este ejemplo para /b
:
El gato esparció su comida por toda la habitación.
El uso de expresiones regulares - /bcat/b
coincidirá con la palabra cat
pero no con el cat
scattered
.
Para /B
el autor usa el siguiente ejemplo:
Por favor ingrese la identificación de nueve dígitos mientras
aparece en la clave de acceso codificada por color.
Usar las coincidencias de regex /B-/B
-
entre la palabra color - coded
. El uso de /b-/b
por el contrario coincide con -
en nine-digit
y pass-key
.
¿Cómo es que en el primer ejemplo usamos /b
para separar cat
y en el segundo uso /B
para separar -
? Usar /b
en el segundo ejemplo hace lo contrario de lo que hizo antes.
Por favor, explícame la diferencia.
EDITAR: Además, ¿alguien puede explicar con un nuevo ejemplo?
Con un ejemplo diferente:
Considere que esta es la cadena y patrón que se debe buscar es ''cat'':
text = "catmania thiscat thiscatmaina";
Ahora definiciones,
''/ b'' encuentra / combina el patrón al principio o al final de cada palabra.
''/ B'' no encuentra / combina el patrón al principio o al final de cada palabra.
Casos diferentes:
Caso 1: al comienzo de cada palabra
result = text.replace(//bcat/g, "ct");
Ahora, el resultado es "ctmania thiscat thiscatmaina"
Caso 2: al final de cada palabra
result = text.replace(/cat/b/g, "ct");
Ahora, el resultado es "catmania thisct thiscatmaina"
Caso 3: No en el comienzo
result = text.replace(//Bcat/g, "ct");
Ahora, el resultado es "catmania thisct thisctmaina"
Caso 4: No al final
result = text.replace(/cat/B/g, "ct");
Ahora, el resultado es "ctmania thiscat thisctmaina"
Caso 5: Ni comienzo ni fin
result = text.replace(//Bcat/B/g, "ct");
Ahora, el resultado es "catmania thiscat thisctmaina"
Espero que esto ayude :)
Deje tomar una cadena como:
XIX IXI XX XI II IIXX XXII II XX -X X-XI IX -X- -IX -XI IX- XI- X_X _X-
Nota: El subrayado (_) no se considera un carácter especial en este caso.
-
//bX/b/g
Debe comenzar y terminar con un carácter especial o un espacio en blanco
XIX IXI XX X I II IIXX XXII II X - X - X X - X - I I - X - X - -I- X - X -I I- X - X -I- X_X _X-
-
//bX/g
Debería comenzar con un carácter especial o un espacio en blanco
X IX IXI X X X I II IIXX X XII II X - X - X X - X - I I - X - X - - I - X - X - I - X - X - I - X _X _X-
-
/X/b/g
Debe terminar con un carácter especial o espacio blanco
XI X IXI X X X II IIX X XXII II X - X - X X - X - I - X - X - - I - X - X - I - X - X - I - X_ X _ X -
-
//BX/B/g
No debe comenzar y no debe terminar con un personaje especial o un espacio en blanco
XIX I X I XX XI II II X X X X II II XX -X X-XI IX -X- -IX -XI IX- XI- X_X _X-
-
//BX/g
No debería comenzar con un carácter especial o un espacio en blanco
XI X I X I X X XI II II XX X X II II XX -X X-XI IX -X- -IX -XI IX- XI- X_ X _ X -
-
/X/B/g
No debería terminar con un carácter especial o un espacio en blanco
X IX I X I X X XI II II X X XX II II XX -X X-XI IX -X- -IX -XI IX- XI- X _X _X-
-
//bX/B/g
Debería comenzar y no terminar con un carácter especial o un espacio en blanco
X IX IXI X X XI II II X X X XII II XX -X X-XI IX -X- -IX -XI IX- XI- X _X _X-
-
//BX/b/g
No debería comenzar y debería terminar con un carácter especial o un espacio en blanco
XI X IXI X X XI II IIX X XXII II XX -X X-XI IX -X- -IX -XI IX- XI- X_ X _ X -
El metacarácter / b es un anclaje como el signo de intercalación y el signo de dólar. Coincide en una posición que se llama un "límite de palabras". Este partido es de longitud cero.
Hay tres posiciones diferentes que califican como límites de palabras:
- Antes del primer caracter en la cadena, si el primer caracter es un personaje de palabra.
- Después del último carácter en la cadena, si el último carácter es un carácter de palabra.
- Entre dos caracteres en la cadena, donde uno es un carácter de palabra y el otro no es un carácter de palabra.
/ B es la versión negada de / b . / B coincide en todas las posiciones donde / b no. Efectivamente, / B coincide en cualquier posición entre dos caracteres de palabra, así como en cualquier posición entre dos caracteres que no sean de palabra.
Fuente: http://www.regular-expressions.info/wordboundaries.html
La confusión proviene de su pensamiento /b
coincide con los espacios (probablemente porque "b" sugiere "en blanco").
/b
coincide con la cadena vacía al principio o al final de una palabra . /B
coincide con la cadena vacía no al principio ni al final de una palabra. La clave aquí es que "-" no es parte de una palabra. Así <left>-<right>
coincide con /b-/b
porque hay límites de palabras a cada lado de -
. Por otro lado para <left> - <right>
(tenga en cuenta los espacios), no hay límites de palabras en ninguno de los lados del tablero. Los límites de las palabras son un espacio más a la izquierda y a la derecha.
Por otro lado, cuando se buscan /bcat/b
límites de palabras se comportan de forma más intuitiva y coincide con "cat" como se esperaba.
/B
no es /b
por ejemplo, negativo /b
pass-key
aquí no tiene ningún límite de palabras -
por lo que coincide con /B
en su primer ejemplo; hay un límite de palabras al lado del gato, por lo que coincide /b
reglas similares se aplican para otros también. /W
es negativo de /w
/UPPER CASE
es negativo de /LOWER CASE
/b
coincide con un límite de palabras. /B
coincide con los límites sin palabras, y es equivalente a [^/b]
(?!/b)
(¡gracias a por la corrección!) . Ambos son de ancho cero.
Ver http://www.regular-expressions.info/wordboundaries.html para más detalles. El sitio es extremadamente útil para muchas preguntas básicas sobre expresiones regulares.
/b
es un límite de palabra de ancho cero. Específicamente:
Coincide con la posición entre un carácter de palabra (cualquier cosa que coincida con / w) y un carácter que no sea de palabra (cualquier cosa que coincida con [^ / w] o / W), así como al principio o al final de la cadena si la primera y / o los últimos caracteres en la cadena son caracteres de palabras.
Ejemplo:. ./b
coincide con c
en abc
/B
es un límite sin palabras de ancho cero. Específicamente:
Coincide con la posición entre dos caracteres de palabra (es decir, la posición entre / w / w), así como en la posición entre dos caracteres que no son de palabra (es decir, / W / W).
Ejemplo: /B./B
coincide con b
en abc
regular-expressions.info para obtener más información sobre expresiones regulares.