JScript  

Delimitadores

Hasta este momento, los ejemplos que ha visto sólo muestran cómo buscar encabezados de capítulo en todas las posiciones en que aparezcan. Cualquier aparición de la cadena 'Capítulo' seguida por un espacio y por un número podría ser un encabezado de capítulo real o, también, podría ser una referencia cruzada a otro capítulo. Puesto que los encabezados de capítulo verdaderos siempre aparecen al comienzo de una línea, deberá idear una manera de buscar sólo los encabezados y no las referencias cruzadas.

Los delimitadores le permitirán lograrlo. Mediante los delimitadores es posible fijar una expresión regular al principio o al final de una línea. También permiten crear expresiones regulares que ocurran dentro, al final o al principio de una palabra. La tabla siguiente incluye la lista de delimitadores de expresión regular y su significado:

Carácter Descripción
^ Coincide con la posición al comienzo de la cadena de entrada. Si se establece la propiedad Multiline del objeto RegExp, ^ también coincide con la posición que sigue a '\n' o '\r'.
$ Coincide con la posición al final de la cadena de entrada. Si se establece la propiedad Multiline del objeto RegExp, $ también coincide con la posición que precede a '\n' o '\r'.
\b Coincide con un límite de palabra, es decir, la posición entre una palabra y un espacio.
\B Coincide con algo que no sea un límite de palabra.

No es posible usar un cuantificador junto con un delimitador. Puesto que no puede haber más de una posición inmediatamente antes o después de un límite de palabra o nueva línea, no se permiten expresiones como '^*'.

Para que un texto coincida al comienzo de una línea de texto, use el carácter '^' al comienzo de la expresión regular. No confunda este uso de '^' con su utilización dentro de una expresión de corchete. No tienen nada que ver.

Para que un texto coincida al final de una línea de texto, use el carácter '$' al final de la expresión regular.

Para utilizar delimitadores al buscar encabezados de capítulo, la siguiente expresión regular de JScript coincide con un encabezado de capítulo situado en el comienzo de una línea al que siguen un máximo de dos dígitos:

/^Capítulo [1-9][0-9]{0,1}/

En VBScript la misma expresión regular aparecería como:

"^Capítulo [1-9][0-9]{0,1}"

No sólo existe un verdadero encabezado de capítulo al comienzo de la línea, sino que es el único elemento, por lo que también debe encontrarse al final de la línea. La siguiente expresión permite garantizar que la coincidencia especificada sólo coincide con capítulos, no con referencias cruzadas. Para conseguirlo, es necesario crear una expresión que sólo coincida al comienzo o al final de una línea del texto.

/^Capítulo [1-9][0-9]{0,1}$/

En VBScript use:

"^Capítulo [1-9][0-9]{0,1}$"

La coincidencia con límites de palabra difiere en algunos aspectos, pero agrega una capacidad muy importante a las expresiones regulares. El límite de palabra es la posición entre una palabra y un espacio. Los límites que no son de palabra ocupan cualquier otra posición. La siguiente expresión de JScript coincide con los tres primeros caracteres de la palabra 'Capítulo', ya que estos aparecen detrás de un límite de palabra:

/\bCap/

o en VBScript:

"\bCap"

La posición del operador '\b' es esencial en este caso. Si está situado al comienzo de la cadena que se va a comparar, busca la coincidencia al principio de la palabra; si está situado al final, busca la coincidencia al final de la palabra. Por ejemplo, las siguientes expresiones coinciden con el segmento 'ulo' de la palabra 'Capítulo', ya que ésta aparece antes de un límite de palabra:

/ulo\b/

y

"ulo\b"

Las siguientes expresiones coinciden con el segmento 'apí' de la palabra 'Capítulo', pero no como en 'apícola':

/\Bapí/

y

"\Bapí"

Esto se debe a que 'apí' ocurre en un límite que no es de palabra en la palabra 'Capítulo' y en un límite de palabra en 'apícola'. En lo que respecta al operador de límite que no es de palabra, la posición no es importante, ya que la coincidencia no está relacionada con el comienzo o el final de una palabra.

Ayuda de Javascript y Vbscript para Javascripts.astalaweb.com.