En Java, las expresiones regulares o Regex (en resumen) en Java son una API para definir patrones de cadenas que se pueden usar para buscar, manipular y editar una cadena en Java. La validación de correo electrónico y las contraseñas son algunas áreas de cadenas donde Regex se usa ampliamente para definir las restricciones. Las expresiones regulares en Java se proporcionan en java.util.regex paquete. Esto consiste en 3 clases y 1 interfaz . El java.util.regex El paquete consta principalmente de las siguientes tres clases, como se muestra a continuación en formato tabular:
Clases e interfaces de expresiones regulares
Regex en Java proporciona 3 clases y 1 interfaz que son las siguientes:
- Clase de patrón
- Clase de emparejamiento
- Clase PatternSyntaxException
- Interfaz de resultado de coincidencia
Se puede interpretar una mayor comprensión a partir de la imagen proporcionada a continuación de la siguiente manera:
| S. No. | Clase/Interfaz | Descripción |
|---|---|---|
| 1. | Clase de patrón | Se utiliza para definir patrones. |
| 2. | Clase de emparejamiento | Se utiliza para realizar operaciones de coincidencia en texto usando patrones. |
| 3. | Clase PatternSyntaxException | Se utiliza para indicar errores de sintaxis en un patrón de expresión regular. |
| 4. | Interfaz de resultado de coincidencia | Se utiliza para representar el resultado de una operación de coincidencia. |
Clase de patrón
Esta clase es una compilación de expresiones regulares que se pueden usar para definir varios tipos de patrones, sin proporcionar constructores públicos. Esto se puede crear invocando el método compile() que acepta una expresión regular como primer argumento, devolviendo así un patrón después de la ejecución.
| S. No. | Método | Descripción |
|---|---|---|
| 1. | compilar (expresión regular de cadena) | Se utiliza para compilar la expresión regular dada en un patrón. |
| 2. | compilar (cadena de expresiones regulares, banderas int) | Se utiliza para compilar la expresión regular dada en un patrón con los indicadores dados. |
| 3. | banderas() | Se utiliza para devolver las banderas de coincidencia de este patrón. |
| 4. | comparador (entrada CharSequence) | Se utiliza para crear un comparador que comparará la entrada dada con este patrón. |
| 5. | coincidencias (expresión regular de cadena, entrada CharSequence) | Se utiliza para compilar la expresión regular dada e intenta hacer coincidir la entrada dada con ella. |
| 6. | patrón() | Se utiliza para devolver la expresión regular a partir de la cual se compiló este patrón. |
| 7. | cita (cadena s) | Se utiliza para devolver una cadena de patrón literal para la cadena especificada. |
| 8. | dividir (entrada CharSequence) | Se utiliza para dividir la secuencia de entrada dada en torno a coincidencias de este patrón. |
| 9. | split (entrada CharSequence, límite int) | Se utiliza para dividir la secuencia de entrada dada en torno a coincidencias de este patrón. El parámetro de límite controla el número de veces que se aplica el patrón. |
| 10. | Encadenar() | Se utiliza para devolver la representación de cadena de este patrón. |
Ejemplo: Clase de patrón
Java
// Java Program Demonstrating Working of matches() Method> // Pattern class> // Importing Pattern class from java.util.regex package> import> java.util.regex.Pattern;> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Following line prints 'true' because the whole> >// text 'geeksforgeeks' matches pattern> >// 'geeksforge*ks'> >System.out.println(Pattern.matches(> >'geeksforge*ks'>,>'geeksforgeeks'>));> >// Following line prints 'false' because the whole> >// text 'geeksfor' doesn't match pattern 'g*geeks*'> >System.out.println(> >Pattern.matches(>'g*geeks*'>,>'geeksfor'>));> >}> }> |
>
>Producción
true false>
clase de emparejamiento
Este objeto se utiliza para realizar operaciones de coincidencia para una cadena de entrada en Java, interpretando así los patrones explicados anteriormente. Esto tampoco define constructores públicos. Esto se puede implementar invocando un matcher() en cualquier objeto de patrón.
| S. No. | Método | Descripción |
|---|---|---|
| 1. | encontrar() | Se utiliza principalmente para buscar múltiples apariciones de expresiones regulares en el texto. |
| 2. | encontrar (int inicio) | Se utiliza para buscar apariciones de expresiones regulares en el texto a partir del índice dado. |
| 3. | comenzar() | Se utiliza para obtener el índice inicial de una coincidencia que se encuentra mediante el método find(). |
| 4. | fin() | Se utiliza para obtener el índice final de una coincidencia que se encuentra mediante el método find(). Devuelve el índice del carácter junto al último carácter coincidente. |
| 5. | grupoCount() | Se utiliza para encontrar el número total de la subsecuencia coincidente. |
| 6. | grupo() | Se utiliza para encontrar la subsecuencia coincidente. |
| 7. | partidos() | Se utiliza para comprobar si la expresión regular coincide con el patrón. |
Nota: T Pattern.matches() comprueba si todo el texto coincide con un patrón o no. Otros métodos (que se muestran a continuación) se utilizan principalmente para encontrar múltiples apariciones de patrones en el texto.
Analicemos algunos programas de muestra como lo hicimos para la clase de Patrón. Aquí discutiremos algunos programas Java que demuestran el funcionamiento de compile(), find(), start(), end() y split() para poder comprender mejor la clase Matcher.
Ejemplo 1: Búsqueda de patrones
Java
// Java program to demonstrate working of> // String matching in Java> // Importing Matcher and Pattern class> import> java.util.regex.Matcher;> import> java.util.regex.Pattern;> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Create a pattern to be searched> >// Custom pattern> >Pattern pattern = Pattern.compile(>'geeks'>);> >// Search above pattern in 'techcodeview.com> | Descripción |
|---|---|
| [xyz] | x, y o z |
| [^xyz] | Cualquier carácter distinto de x,y o z |
| [a-zA-Z] | caracteres del rango a a z o de A a Z. |
| [a-f[m-t]] | Unión de a a f y m a t. |
| [a-z && p-y] | Toda la gama de elementos de intersección entre dos rangos. |
| [a-z && [^bc]] | unión de a a z con excepción de b y c |
| [a-z && [^m-p]] | unión de a a z con rango excepto m a p |
A continuación se muestra la implementación del tema anterior:
Java
La sonrisa más hermosa
// Java Program to check on Regex> import> java.io.*;> import> java.util.regex.*;> // Driver class> class> GFG {> >// Main function> >public> static> void> main(String[] args)> >{> >// Checks if the string matches with the regex> >// Should be single character a to z> >System.out.println(Pattern.matches(>'[a-z]'>,>'g'>));> >// Check if the element is range a to z or A to Z> >System.out.println(> >Pattern.matches(>'[a-zA-Z]'>,>'Gfg'>));> >}> }> |
>
>Producción
true false>
Metacaracteres de expresiones regulares
| expresión regular | Descripción |
|---|---|
| ¿X? | X aparece una vez o no |
| X+ | X aparece una o más de una vez. |
| X* | X aparece cero o no una vez |
| X{n} | X aparece n veces |
| X{n,} | X aparece n veces o más que n |
| X{n,m} | X aparece mayor que igual a n veces y menor que m veces. |
A continuación se muestra la implementación de los metacaracteres Regex:
Java
// Java Program to check on regex> import> java.io.*;> import> java.util.regex.*;> // Driver class> class> GFG {> >// Main function> >public> static> void> main(String[] args)> >{> >// Checking all the strings using regex> >System.out.println(Pattern.matches(>'[b-z]?'>,>'a'>));> >// Check if all the elements are in range a to z> >// or A to Z> >System.out.println(> >Pattern.matches(>'[a-zA-Z]+'>,>'GfgTestCase'>));> >// Check if elements is not in range a to z> >System.out.println(Pattern.matches(>'[^a-z]?'>,>'g'>));> >// Check if all the elements are either g,e,k or s> >System.out.println(> >Pattern.matches(>'[geks]*'>,>'geeksgeeks'>));> >}> }> |
>
>Producción
false true false true>
Ejemplo de buscador de expresiones regulares de Java
| expresión regular | Descripción |
|---|---|
| . | cualquier personaje |
| d | Cualquier dígito, [0-9] |
| D | Cualquiera que no sea un dígito, [^0-9] |
| s | Carácter de espacio en blanco, [ x0Bf ] |
| S | Carácter que no es un espacio en blanco, [^s] |
| En | Carácter de palabra, [a-zA-Z_0-9] |
| EN | Carácter que no es palabra, [^w] |
cuanto cero por un millon | Límite de palabra |
| B | Límite sin palabras |
A continuación se muestra la implementación de Java Regex Finder:
Java
// Java Program to implement regex> import> java.io.*;> import> java.util.regex.*;> // Driver Class> class> GFG {> >// Main Function> >public> static> void> main(String[] args)> >{> >// Check if all elements are numbers> >System.out.println(Pattern.matches(>'d+'>,>'1234'>));> >// Check if all elements are non-numbers> >System.out.println(Pattern.matches(>'D+'>,>'1234'>));> >// Check if all the elements are non-numbers> >System.out.println(Pattern.matches(>'D+'>,>'Gfg'>));> >// Check if all the elements are non-spaces> >System.out.println(Pattern.matches(>'S+'>,>'gfg'>));> >}> }> |
>
>Producción
true false true true>
Conclusión
Por último, analicemos algunas de las observaciones importantes extraídas del artículo anterior.
- Creamos un objeto de patrón llamando a Pattern.compile(), no hay constructor. compile() es un método estático en la clase Pattern.
- Como arriba, creamos un objeto Matcher usando matcher() en objetos de la clase Pattern.
- Pattern.matches() también es un método estático que se utiliza para comprobar si un texto determinado en su conjunto coincide con el patrón o no.
- find() se utiliza para encontrar múltiples apariciones de patrones en el texto.
- Podemos dividir un texto según un patrón delimitador usando el método split()
Preguntas frecuentes sobre expresiones regulares de Java
P1. ¿Qué son las expresiones regulares en Java?
Años:
Las expresiones regulares en Java se utilizan para patrones de cadenas que se pueden utilizar para buscar, manipular y editar una cadena en Java.
P2. ¿Cuál es un ejemplo simple de expresión regular en Java?
Años:
A continuación se menciona un ejemplo simple de una expresión regular en Java:
Java
// Java Program to check on Regex>import>java.io.*;>import>java.util.regex.*;>// Driver class>class>GFG {>>// Main function>>public>static>void>main(String[] args)>>{>>// Checks if the string matches with the regex>>// Should be single character a to z>>System.out.println(Pattern.matches(>'[a-z]'>,>'g'>));>>// Check if all the elements are non-numbers>>System.out.println(Pattern.matches(>'D+'>,>'Gfg'>));>>// Check if all the elements are non-spaces>>System.out.println(Pattern.matches(>'S+'>,>'gfg'>));>>}>}>>>Produccióntrue true true>