java regex tutorial with regular expression examples
Este tutorial de Java Regex explica qué es una expresión regular en Java, por qué la necesitamos y cómo usarla con la ayuda de ejemplos de expresiones regulares:
A expresión regular en Java que se abrevia como ' regex ”Es una expresión que se utiliza para definir un patrón de búsqueda de cadenas.
El patrón de búsqueda puede ser un carácter simple o una subcadena o puede ser una cadena o expresión compleja que define un patrón particular que se buscará en la cadena.
Además, el patrón puede tener que coincidir una o más veces con la cuerda.
=> Visite aquí para ver la serie de formación Java para todos.
Lo que vas a aprender:
- Expresión regular: por qué la necesitamos
- java.util.regex
- Ejemplo de Java Regex
- Regex Matcher en Java
- Ejemplo de implementación de expresión regular
- Clase de patrón Regex en Java
- Método de coincidencias de cadenas de expresiones regulares
- Clases de caracteres Regex
- Cuantificadores de expresiones regulares
- Personajes Regex Meta
- Operador lógico o (|) Regex
- Validación de correo electrónico mediante Regex
- Conclusión
Expresión regular: por qué la necesitamos
Una expresión regular se utiliza principalmente para buscar un patrón en una cadena. ¿Por qué buscamos un patrón en una cadena? Podríamos querer encontrar un patrón particular en una cadena y luego manipularlo o editarlo.
Entonces, en una aplicación informática, es posible que tengamos un requisito continuo de manipular varios patrones. Por lo tanto, siempre requerimos regex para facilitar la búsqueda del patrón.
Ahora, dado un patrón para buscar, ¿cómo funciona exactamente la expresión regular?
Cuando analizamos y modificamos el texto usando una expresión regular, decimos que 'hemos aplicado expresiones regulares a la cadena o al texto'. Lo que hacemos es aplicar el patrón al texto en una dirección 'de izquierda a derecha' y la cadena de origen coincide con el patrón.
Por ejemplo, considerar una cadena ' ababababab ”. Supongamos que se define una expresión regular 'aba'. Entonces ahora tenemos que aplicar esta expresión regular a la cadena. Al aplicar la expresión regular de izquierda a derecha, la expresión regular coincidirá con la cadena ' aba_aba___ ”, En dos lugares.
Por lo tanto, una vez que se usa un carácter fuente en una coincidencia, no podemos reutilizarlo. Por lo tanto, después de encontrar la primera coincidencia aba, el tercer carácter 'a' no se reutilizó.
preguntas de la entrevista de selenio formuladas en empresas
java.util.regex
El lenguaje Java no proporciona ninguna clase incorporada para expresiones regulares. Pero podemos trabajar con expresiones regulares importando el ' java.util.regex ' paquete.
El paquete java.util.regex proporciona una interfaz y tres clases como se muestra a continuación:
Clase de patrón: Una clase de patrón representa la expresión regular compilada. La clase Pattern no tiene ningún constructor público, pero proporciona métodos compile () estáticos que devuelven objetos Pattern y pueden usarse para crear un patrón.
Clase Matcher: El objeto de la clase Matcher coincide con el patrón de expresiones regulares con la cadena. Al igual que la clase Pattern, esta clase tampoco proporciona ningún constructor público. Proporciona el método matcher () que devuelve un objeto Matcher.
PatternSyntaxException: Esta clase define una excepción sin marcar. Un objeto de tipo PatternSyntaxException devuelve una excepción sin marcar que indica un error de sintaxis en el patrón de expresiones regulares.
Interfaz MatchResult: La interfaz MatchResult determina el resultado de la coincidencia del patrón de expresiones regulares.
Ejemplo de Java Regex
Implementemos un ejemplo simple de expresiones regulares en Java. En el programa siguiente tenemos una cadena simple como patrón y luego la emparejamos con una cadena. La salida imprime la posición inicial y final en la cadena donde se encuentra el patrón.
|_+_|Producción:
Patrón encontrado de 15 a 19
Regex Matcher en Java
La clase matcher implementa la interfaz MatchResult. Matcher actúa como un motor de expresiones regulares y se utiliza para realizar la coincidencia exacta de una secuencia de caracteres.
A continuación se muestran los métodos comunes de la clase Matcher. Tiene más métodos, pero a continuación solo enumeramos los métodos importantes.
No | Método | Descripción |
---|---|---|
7 | int start () | Da el índice inicial de la subsecuencia coincidente y lo devuelve. |
1 | coincidencias booleanas () | Comprueba si la expresión regular coincide con el patrón. |
2 | Patrón de patrón () | Devuelve el patrón que interpreta el comparador. |
3 | buscar booleano () | Este método encuentra la siguiente expresión que se corresponde con el patrón. |
4 | búsqueda booleana (inicio int) | Igual que find () pero encuentra que la expresión se corresponde con la posición inicial dada. |
5 | Grupo de cadenas () | Devuelve la subsecuencia que coincide con el patrón. |
6 | Grupo de cadenas (nombre de la cadena) | Devuelve la subsecuencia de entrada. Esto se captura en la operación de coincidencia anterior al capturar el grupo con el nombre especificado. |
8 | int end () | Devuelve la posición final / índice de la subsecuencia coincidente. |
9 | int groupCount () | Devuelve el número total de subsecuencias coincidentes. |
10 | String replaceAll (reemplazo de cadenas) | Reemplaza todas las subsecuencias de la secuencia de entrada que coinciden con el patrón por una cadena de reemplazo dada. |
11 | String replaceFirst (reemplazo de cadenas) | Reemplaza la primera subsecuencia coincidente de la secuencia de entrada por la cadena de reemplazo especificada. |
12 | Cadena toString () | Devuelve la representación de cadena del comparador actual. |
Ejemplo de implementación de expresión regular
Veamos un ejemplo del uso de algunos de estos métodos.
|_+_|Producción:
cadena de entrada: vende conchas marinas en la orilla del mar con conchas
Reemplazar Primer método: vende perlas de mar en la orilla del mar con conchas
Reemplazar todo método: vende perlas de mar en la orilla del mar con perlas
Clase de patrón Regex en Java
La clase de patrón define el patrón para el motor de expresiones regulares que luego se puede usar para que coincida con la cadena de entrada.
La siguiente tabla muestra los métodos proporcionados por la clase Pattern que se usa comúnmente.
No | Método | Descripción |
---|---|---|
7 | String () split (entrada CharSequence, límite int) | La cadena de entrada se divide en torno a coincidencias encontradas por un patrón determinado. |
1 | compilación de patrones estáticos (String regex) | Devuelve la representación compilada de la expresión regular. |
2 | compilación de patrones estáticos (String regex, int flags) | Compila una expresión regular determinada utilizando indicadores específicos y un patrón de devoluciones. |
3 | Coincide con coincidencias (entrada CharSequence) | Devuelve un comparador haciendo coincidir la secuencia de entrada con el patrón. |
4 | Coincidencias booleanas estáticas (String regex, entrada CharSequence) | Compila la expresión regular dada y hace coincidir el patrón con una entrada determinada. |
5 | int banderas () | Devuelve banderas del patrón con el que se realiza la coincidencia. |
6 | Cadena () dividida (entrada CharSequence) | La cadena de entrada se divide en torno a coincidencias encontradas por un patrón determinado. |
8 | Patrón de cuerdas() | Devuelve el patrón de expresión regular. |
9 | cita de cadena estática (cadena s) | Devuelve un String literal (patrón) para el String dado. |
10 | Cadena toString () | Obtenga una representación de cadena del patrón. |
El siguiente ejemplo utiliza algunos de los métodos anteriores de la clase Pattern.
ejemplos de árboles de decisión en minería de datos|_+_|
Producción:
array (0) = Bienvenido al software
array (1) = portal de ayuda
En el programa anterior, usamos el método de compilación para generar un patrón. Luego dividimos la cadena de entrada sobre este patrón y la leemos en una matriz. Finalmente, mostramos la matriz que se generó como resultado de dividir la cadena de entrada.
Método de coincidencias de cadenas de expresiones regulares
Hemos visto el método String.Contains () en nuestros tutoriales de cadenas. Este método devuelve un valor booleano verdadero o falso dependiendo de si la cadena contiene un carácter específico o no.
Del mismo modo, tenemos un método 'coincide ()' para comprobar si la cadena coincide con una expresión regular o regex. Si la cadena coincide con la expresión regular especificada, se devuelve un valor verdadero o, de lo contrario, se devuelve falso.
La sintaxis general del método matches ():
|_+_|Si la expresión regular especificada no es válida, se lanza 'PatternSyntaxException'.
Implementemos un programa para demostrar el uso del método Match ().
|_+_|Producción:
Cadena de entrada: Tutoriales de la serie Java
Regex: (. *) Java (. *) Coincide con la cadena? cierto
Regex: (. *) ¿La serie (. *) Coincide con la cadena? cierto
Regex: (. *) ¿La serie (. *) Coincide con la cadena? falso
Regex: (. *) ¿Los tutoriales coinciden con la cadena? cierto
Usamos muchos caracteres especiales y metacaracteres con expresiones regulares en Java. También utilizamos muchas clases de caracteres para la coincidencia de patrones. En esta sección, proporcionaremos las tablas que contienen clases de caracteres, metacaracteres y cuantificadores que se pueden usar con expresiones regulares.
Clases de caracteres Regex
No | Clase de personaje | Descripción |
---|---|---|
7 | (a-z && (^ m-p)) | Resta: de la a a la z, y no de la m a la p: (a-lq-z) |
1 | (pqr) | p, q o r |
2 | (^ pqr) | Negación: cualquier carácter que no sea p, q o r |
3 | (a-zA-Z) | Rango: de la a a la z o de la A a la Z, inclusive |
4 | (a-d (m-p)) | Unión: de la a a la d, om a la p: (a-dm-p) |
5 | (a-z && (def)) | Intersección: d, e o f |
6 | (a-z && (^ bc)) | Resta: de la a a la z, excepto b y c: (ad-z) |
Cuantificadores de expresiones regulares
Los cuantificadores se utilizan para especificar el número de veces que el carácter aparecerá en la expresión regular.
La siguiente tabla muestra los cuantificadores de expresiones regulares comunes que se utilizan en Java.
No | Cuantificador de expresiones regulares | Descripción |
---|---|---|
7 | EN | Cualquier carácter que no sea una palabra, (^ w) |
1 | x? | x aparece una vez o no aparece |
2 | x+ | x aparece una o más veces |
3 | x* | x ocurre cero o más veces |
4 | x {n} | x ocurre n veces |
5 | x {n,} | x ocurre no más veces |
6 | x{y,z} | x ocurre al menos y veces pero menos de z veces |
Personajes Regex Meta
Los metacaracteres en expresiones regulares funcionan como códigos abreviados. Estos códigos incluyen espacios en blanco y caracteres que no son espacios en blanco junto con otros códigos cortos.
La siguiente tabla enumera los metacaracteres regex.
No | Personajes meta | Descripción |
---|---|---|
1 | . | Cualquier carácter (puede o no coincidir con terminator) |
2 | D | Cualquier dígito, (0-9) |
3 | D | Cualquier que no sea un dígito, (^ 0-9) |
4 | s | Cualquier carácter de espacio en blanco, ( t n x0B f r) |
5 | S | Cualquier carácter que no sea un espacio en blanco, (^ s) |
6 | en | Cualquier carácter de palabra, (a-zA-Z_0-9) |
8 | Un límite de palabras | |
9 | B | Un límite sin palabras |
A continuación se muestra un programa Java que utiliza los caracteres especiales anteriores en la expresión regular.
|_+_|Producción:
Jim (jim): falso
(Pp) eter (Peter): cierto
. * abc. * (pqabcqp): verdadero
^ (^ d). * (abc123): verdadero
(a-zA-Z) (a-zA-Z) (a-zA-Z) (aQz): verdadero
(a-zA-Z) (a-zA-Z) (a-zA-Z), a10zfalse
D *, abcde: verdadero
^ Esto $, esto es Java: falso
^ Esto $, Esto: falso
^ Esto $, ¿es esto Java?: Falso
En el programa anterior, hemos proporcionado varias expresiones regulares que coinciden con la cadena de entrada. Se recomienda a los lectores que lean los comentarios del programa para cada expresión regular para comprender mejor el concepto.
Operador lógico o (|) Regex
Podemos usar el operador lógico o (|) en regex que nos da la opción de seleccionar cualquier operando de | operador. Podemos usar este operador en una expresión regular para dar una opción de carácter o cadena. Por ejemplo, si queremos hacer coincidir ambas palabras, 'prueba' y 'Prueba', incluiremos estas palabras en el operador lógico o como Prueba | prueba.
Veamos el siguiente ejemplo para comprender este operador.
|_+_|Producción:
Texto 'Prueba' que se encuentra en 9 a 13.
Texto 'prueba' que se encuentra en 8 a 12.
En este programa, hemos proporcionado la expresión regular '(Prueba | prueba)'. Luego, primero le damos la cadena de entrada como “Ayuda para pruebas de software” y hacemos coincidir el patrón. Vemos que se encuentra la coincidencia y se imprime la posición.
A continuación, damos la cadena de entrada como 'SoftwaretestingHelp'. Esta vez también se encuentra la coincidencia. Esto se debe a que la expresión regular ha utilizado el operador o y, por lo tanto, el patrón a cada lado de | el operador coincide con la cadena.
Validación de correo electrónico mediante Regex
También podemos validar la identificación del correo electrónico (dirección) con expresiones regulares usando el método java.util.regex.Pattern.matches (). Coincide con la identificación de correo electrónico dada con la expresión regular y devuelve verdadero si el correo electrónico es válido.
El siguiente programa demuestra la validación de correo electrónico usando expresiones regulares.
|_+_|Producción:
La ID de correo electrónico es: ssthva@gmail.com
¿ID de correo electrónico válida? cierto
La ID de correo electrónico es: @ sth @ gmail.com
¿ID de correo electrónico válida? falso
Como podemos ver en la salida anterior, la primera identificación de correo electrónico es válida. La segunda identificación comienza directamente con @ y, por lo tanto, regex no la valida. Por lo tanto, es una identificación inválida.
mejor actualizador de controladores para windows 7
Preguntas frecuentes
P # 1) ¿Qué hay en una expresión regular?
Responder: A Expresión regular comúnmente llamado regex es un patrón o una secuencia de caracteres (normales o especiales o metacaracteres) que se usa para validar una cadena de entrada.
P # 2) ¿Cuál es el significado de la clase Matcher para una expresión regular en Java?
Responder: La clase matcher (java.util.regex.Matcher) actúa como un motor de expresiones regulares. Realiza las operaciones de coincidencia interpretando el patrón.
P # 3) ¿Cuál es el patrón en Java?
Responder: El paquete java.util.regex proporciona una clase Pattern que se utiliza para compilar una expresión regular en un patrón que es la representación estándar de expresiones regulares. Este patrón luego se usa para validar cadenas haciéndolo coincidir con el patrón.
P # 4) ¿Qué es B en una expresión regular?
Responder: La B en regex se denota como by es un carácter de ancla que se usa para coincidir con una posición llamada límite de palabra. El inicio de la línea se indica con un signo de intercalación (^) y el final de la línea se indica con un signo de dólar ($).
P # 5) ¿Es Java seguro para subprocesos de patrones?
Responder: Si. Las instancias de la clase Pattern son inmutables y seguras para su uso por varios subprocesos simultáneos. Pero las instancias de la clase Matcher no son seguras para subprocesos.
Conclusión
En este tutorial, hemos analizado las expresiones regulares en Java. La expresión regular que también se conoce como 'regex' se utiliza para validar la cadena de entrada en Java. Java proporciona el ' java.util.regex’ paquete que proporciona clases como Pattern, Matcher, etc. que ayudan a definir y hacer coincidir el patrón con la cadena de entrada.
También hemos visto varias clases de caracteres especiales y metacaracteres que podemos usar en la expresión regular que dan códigos abreviados para la coincidencia de patrones. También exploramos la validación de correo electrónico mediante expresiones regulares.
=> Explore la serie de capacitación simple de Java aquí.