Tarea 2 Individual
Tarea 2 Individual
Si se usa una expresión para analizar o modificar un texto, se dice que “la expresión
regular se aplica al texto”. El patrón definido por una expresión regular se aplica a una
cadena de izquierda a derecha. Una vez que un carácter de la cadena se ha usado, no
puede reutilizarse. Por ejemplo la expresión regular “aba” se ajusta a la cadena match
"ababababa"sólo dos veces (aba_aba ).
Caracteres
Operadores Lógicos
Los operadores lógicos de la tabla 11.3 nos permiten combinar caracteres o clases
de caracteres para formar expresiones regulares más complejas.
Cuantificadores
Los cuantificadores definen cuantas veces aparecerá un elemento en una
expresión. Los diferentes cuantificadores que se pueden emplear en una
expresión regular se muestran en la tabla 11.4
Metacaracteres de Frontera
Los metacaracteres de frontera nos permiten especificar en qué parte de una
cadena buscar por una coincidencia con la expresión regular. Algunos de estos
metacaracteres se muestran en la tabla 11.5.
Captura de Grupos
La captura de grupos nos permite tratar múltiples caracteres como si fueran una
unidad simple. Para capturar un grupo se encierran los caracteres que forman
el grupo entre paréntesis, (), tabla 11.6.
1. ((A)(B(C)))
2. (A)
3. (B(C))
4. (C)
Referencias
Para hacer referencia a la porción de la cadena que coincide al grupo capturado
dentro de una expresión regular se usa el carácter diagonal invertida ‘\’ seguido
del número del grupo capturado. Por ejemplo, la expresión regular (\d\d)\1 nos
indica que se va a capturar un grupo formado por dos dígitos contiguos, y que el
patrón a ajustar serán esos dos dígitos seguidos de los mismos dos dígitos.
La Interfaz MatchResult
Lanza:
IllegalStateException - Si no se ha intentado aún ajustar la secuencia de
caracteres al patrón o si no la operación de ajuste previa falló.
Lanza:
IllegalStateException - Si no se ha intentado aún ajustar la secuencia de
caracteres al patrón o si no la operación de ajuste previa falló.
IndexOutOfBoundsException – Si no hay un grupo capturado en el patrón con el
índice del parámetro.
int end()
Lanza:
IllegalStateException - Si no se ha intentado aún ajustar la secuencia de
caracteres al patrón o si no la operación de ajuste previa falló.
Tabla 11.8 Métodos de la Interfaz MatchResult. Cont.
int end(int group)
Lanza:
IllegalStateException - Si no se ha intentado aún ajustar la secuencia de
caracteres al patrón o si no la operación de ajuste previa falló.
IndexOutOfBoundsException – Si no hay un grupo capturado en el patrón con el
índice del parámetro.
String group()
Lanza:
IllegalStateException - Si no se ha intentado aún ajustar la secuencia de
caracteres al patrón o si no la operación de ajuste previa falló.
String group(int group)
Lanza:
IllegalStateException - Si no se ha intentado aún ajustar la secuencia de
caracteres al patrón o si no la operación de ajuste previa falló.
IndexOutOfBoundsException – Si no hay un grupo capturado en el patrón con el
índice del parámetro.
int groupCount()
La Clase Matcher
La clase Matcher es la máquina que realiza las operaciones de ajuste de una secuencia
de caracteres a un patrón definido por la clase Pattern. Un ajustador, que es una
instancia de la clase Matcher se crean invocando al método matcher() de un patrón, que
es una instancia de la clase Pattern. Algunos de los métodos de la clase Matcher y que
podemos usar para realizar tres diferentes tipos de operaciones de ajuste, se muestran
en la tabla 11.9:
Tabla 11.9 Métodos de la Clase Matcher.
public boolean matches()
Si el ajuste tiene éxito, se puede obtener más información usando los métodos: start(),
end(),
y group().
public boolean find()
Si el ajuste tiene éxito, se puede obtener más información usando los métodos: start(),
end(),
y group().
public boolean find(int start)
Si el ajuste tiene éxito, se puede obtener más información usando los métodos: start(),
end(), y group().
Lanza:
IndexOutOfBoundsException – Si el parámetro start < 0 o si es mayor a la
longitud de la secuencia de caracteres.
public boolean lookingAt()
Intenta ajustar la secuencia de caracteres al patrón, a partir del inicio de la secuencia. Regresa
true si y sólo sí un prefijo de la secuencia se ajusta al patrón.
Si el ajuste tiene éxito, se puede obtener más información usando los métodos: start(),
end(), y group().
public Pattern pattern()
Cambia el patron usado por este ajustador para encontrar coincidencias al patrón del
parámetro. El método regresa este ajustador.
Este método hace que el ajustador pierda la información acerca de los grupos del último ajuste.
La posición del ajustador en la secuencia de caracteres se mantiene y la última posición de
agregado no se ve afectada.
Lanza:
IllegalArgumentException – Si el parámetro es null.
public String replaceAll(String replacement)
Regresa una cadena en la que cada subsecuencia de la secuencia de caracteres que se ajusta
al patrón es reemplazada por la cadena del parámetro.
Lanza:
IllegalStateException - Si no se ha intentado aún ajustar la secuencia de
caracteres al patrón o si no la operación de ajuste previa falló.
Tabla 11.9 Métodos de la Clase Matcher. Cont.
public StringBuffer appendTail(StringBuffer sb)
Este método se usa normalmente junto con los métodos find() y appendReplacement()
para hacer una búsqueda y reemplazo. Por ejemplo, el siguiente código le agrega al
StringBuffer sb, la secuencia "un gato, dos gatos en el patio":
Pattern p = Pattern.compile("gato");
Matcher m = p.matcher("un perro, dos perros en el patio
"); StringBuffer sb = new StringBuffer();
while (m.find())
{ m.appendReplacement(sb,
"dog");
}
m.appendTail(sb);
La Clase Pattern
La clase Pattern es una representación compilada de una expresión regular.
Una cadena con una expresión regular debe compilarse a una instancia de esta
clase. El patrón resultante puede crearse para crear un ajustador que pueda ajustar
secuencias de caracteres a expresiones regulares.
Algunos de los atributos y métodos de la clase Pattern y que podemos usar para
realizar tres diferentes tipos de operaciones de ajuste, se muestran en laa tablas 11.10
y 11.11:
Establece que el ajuste se hará sin hacer distinción entre minúsculas y mayúsculas.
public static final int MULTILINE
patrón Lanza:
PatternSyntaxException - Si la sintaxis de la expresión regular es inválida.
CONCLUSIÓN
Las expresiones regulares vienen a tapar un hueco en el JDK de Sun que venia siendo solicitado desde hace
mucho tiempo. Con la inclusión de las expresiones regulares Java se convierte, en este tema, en un
lenguaje de programación tan flexible como otros mas tradicionales en el tema de las expresiones
regulares, Perl, Awk, etc... Hasta ahora la unica opción para conseguir un efecto parecido era el uso de
StringTokenizer en conjunción con llamadas repetidas al método charAt que producía un código
demasiado enrevesado. Las expresiones regulares tienen un amplio abanico de posibilidades,
principalmente para hacer búsquedas, para sustituir ocurrencias y para comprobar la buena formación de
cadenas.