El Expresión regular de Java o expresión regular es una API para definir un patrón para buscar o manipular cadenas .
Se usa ampliamente para definir la restricción de cadenas como contraseña y validación de correo electrónico. Después de aprender el tutorial de expresiones regulares de Java, podrá probar sus expresiones regulares con la herramienta Java Regex Tester.
Java Regex API proporciona 1 interfaz y 3 clases en java.util.regex paquete.
paquete java.util.regex
Las clases Matcher y Pattern proporcionan la posibilidad de expresión regular de Java. El paquete java.util.regex proporciona las siguientes clases e interfaces para expresiones regulares.
- Interfaz de resultado de coincidencia
- clase de emparejamiento
- Clase de patrón
- Clase PatternSyntaxException
clase de emparejamiento
Implementa el Resultado del partido interfaz. Es un motor de expresiones regulares que se utiliza para realizar operaciones de coincidencia en una secuencia de caracteres.
| No. | Método | Descripción |
|---|---|---|
| 1 | coincidencias booleanas() | Pruebe si la expresión regular coincide con el patrón. |
| 2 | búsqueda booleana() | encuentra la siguiente expresión que coincide con el patrón. |
| 3 | búsqueda booleana (int inicio) | encuentra la siguiente expresión que coincide con el patrón del número inicial dado. |
| 4 | Grupo de cadenas() | devuelve la subsecuencia coincidente. |
| 5 | int inicio() | devuelve el índice inicial de la subsecuencia coincidente. |
| 6 | pretender() | devuelve el índice final de la subsecuencia coincidente. |
| 7 | int grupoCount() | devuelve el número total de la subsecuencia coincidente. |
Clase de patrón
Es el versión compilada de una expresión regular . Se utiliza para definir un patrón para el motor de expresiones regulares.
| No. | Método | Descripción |
|---|---|---|
| 1 | Compilación de patrón estático (expresión regular de cadena) | compila la expresión regular dada y devuelve la instancia del patrón. |
| 2 | Comparador de coincidencias (entrada CharSequence) | crea un comparador que hace coincidir la entrada dada con el patrón. |
| 3 | coincidencias booleanas estáticas (expresión regular de cadena, entrada CharSequence) | Funciona como una combinación de métodos de compilación y comparación. Compila la expresión regular y hace coincidir la entrada dada con el patrón. |
| 4 | String[] split(entrada CharSequence) | divide la cadena de entrada dada alrededor de coincidencias de un patrón dado. |
| 5 | Patrón de cuerdas() | devuelve el patrón de expresiones regulares. |
Ejemplo de expresiones regulares de Java
Hay tres formas de escribir el ejemplo de expresiones regulares en Java.
import java.util.regex.*; public class RegexExample1{ public static void main(String args[]){ //1st way Pattern p = Pattern.compile('.s');//. represents single character Matcher m = p.matcher('as'); boolean b = m.matches(); //2nd way boolean b2=Pattern.compile('.s').matcher('as').matches(); //3rd way boolean b3 = Pattern.matches('.s', 'as'); System.out.println(b+' '+b2+' '+b3); }} Pruébalo ahora Producción
true true true
Expresión regular . Ejemplo
El . (punto) representa un solo carácter.
import java.util.regex.*; class RegexExample2{ public static void main(String args[]){ System.out.println(Pattern.matches('.s', 'as'));//true (2nd char is s) System.out.println(Pattern.matches('.s', 'mk'));//false (2nd char is not s) System.out.println(Pattern.matches('.s', 'mst'));//false (has more than 2 char) System.out.println(Pattern.matches('.s', 'amms'));//false (has more than 2 char) System.out.println(Pattern.matches('..s', 'mas'));//true (3rd char is s) }} Pruébalo ahora Clases de caracteres de expresiones regulares
| No. | Clase de personaje | Descripción |
|---|---|---|
| 1 | [a B C] | a, b o c (clase simple) |
| 2 | [^abc] | Cualquier carácter excepto a, b o c (negación) |
| 3 | [a-zA-Z] | de a a z o de A a Z, inclusive (rango) |
| 4 | [a-d[m-p]] | a a d, o m a p: [a-dm-p] (unión) |
| 5 | [a-z&&[def]] | d, e, o f (intersección) |
| 6 | [a-z&&[^bc]] | de a a z, excepto b y c: [ad-z] (resta) |
| 7 | [a-z&&[^m-p]] | de a a z, y no de m a p: [a-lq-z](resta) |
Ejemplo de clases de caracteres de expresión regular
import java.util.regex.*; class RegexExample3{ public static void main(String args[]){ System.out.println(Pattern.matches('[amn]', 'abcd'));//false (not a or m or n) System.out.println(Pattern.matches('[amn]', 'a'));//true (among a or m or n) System.out.println(Pattern.matches('[amn]', 'ammmna'));//false (m and a comes more than once) }} Pruébalo ahora Cuantificadores de expresiones regulares
Los cuantificadores especifican el número de apariciones de un carácter.
| expresión regular | Descripción |
|---|---|
| ¿X? | X ocurre una vez o nunca |
| X+ | X ocurre una o más veces |
| X* | X ocurre cero o más veces |
| X{n} | X ocurre sólo n veces |
| X{n,} | X ocurre no o más veces |
| X{y,z} | X ocurre al menos y veces pero menos de z veces |
Ejemplo de cuantificadores y clases de caracteres de expresión regular
import java.util.regex.*; class RegexExample4{ public static void main(String args[]){ System.out.println('? quantifier ....'); System.out.println(Pattern.matches('[amn]?', 'a'));//true (a or m or n comes one time) System.out.println(Pattern.matches('[amn]?', 'aaa'));//false (a comes more than one time) System.out.println(Pattern.matches('[amn]?', 'aammmnn'));//false (a m and n comes more than one time) System.out.println(Pattern.matches('[amn]?', 'aazzta'));//false (a comes more than one time) System.out.println(Pattern.matches('[amn]?', 'am'));//false (a or m or n must come one time) System.out.println('+ quantifier ....'); System.out.println(Pattern.matches('[amn]+', 'a'));//true (a or m or n once or more times) System.out.println(Pattern.matches('[amn]+', 'aaa'));//true (a comes more than one time) System.out.println(Pattern.matches('[amn]+', 'aammmnn'));//true (a or m or n comes more than once) System.out.println(Pattern.matches('[amn]+', 'aazzta'));//false (z and t are not matching pattern) System.out.println('* quantifier ....'); System.out.println(Pattern.matches('[amn]*', 'ammmna'));//true (a or m or n may come zero or more times) }} Pruébalo ahora Metacaracteres de expresiones regulares
Los metacaracteres de expresiones regulares funcionan como códigos cortos.
| expresión regular | Descripción |
|---|---|
| . | Cualquier carácter (puede coincidir o no con el terminador) |
| d | Cualquier dígito, menos de [0-9] |
| D | Cualquiera que no sea un dígito, abreviatura de [^0-9] |
| s | Cualquier carácter de espacio en blanco, abreviatura de [ x0Bf ] |
| S | Cualquier carácter que no sea un espacio en blanco, abreviatura de [^s] |
| En | Cualquier carácter de palabra, abreviatura de [a-zA-Z_0-9] |
| EN | Cualquier carácter que no sea una palabra, abreviatura de [^w] |
| Un límite de palabras | |
| B | Un límite sin palabras |
Ejemplo de metacaracteres de expresión regular
import java.util.regex.*; class RegexExample5{ public static void main(String args[]){ System.out.println('metacharacters d....');\d means digit System.out.println(Pattern.matches('\d', 'abc'));//false (non-digit) System.out.println(Pattern.matches('\d', '1'));//true (digit and comes once) System.out.println(Pattern.matches('\d', '4443'));//false (digit but comes more than once) System.out.println(Pattern.matches('\d', '323abc'));//false (digit and char) System.out.println('metacharacters D....');\D means non-digit System.out.println(Pattern.matches('\D', 'abc'));//false (non-digit but comes more than once) System.out.println(Pattern.matches('\D', '1'));//false (digit) System.out.println(Pattern.matches('\D', '4443'));//false (digit) System.out.println(Pattern.matches('\D', '323abc'));//false (digit and char) System.out.println(Pattern.matches('\D', 'm'));//true (non-digit and comes once) System.out.println('metacharacters D with quantifier....'); System.out.println(Pattern.matches('\D*', 'mak'));//true (non-digit and may come 0 or more times) }} Pruébalo ahora Pregunta de expresión regular 1
/*Create a regular expression that accepts alphanumeric characters only. Its length must be six characters long only.*/ import java.util.regex.*; class RegexExample6{ public static void main(String args[]){ System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'arun32'));//true System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'kkvarun32'));//false (more than 6 char) System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'JA2Uk2'));//true System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'arun$2'));//false ($ is not matched) }} Pruébalo ahora
Pregunta de expresión regular 2
/*Create a regular expression that accepts 10 digit numeric characters starting with 7, 8 or 9 only.*/ import java.util.regex.*; class RegexExample7{ public static void main(String args[]){ System.out.println('by character classes and quantifiers ...'); System.out.println(Pattern.matches('[789]{1}[0-9]{9}', '9953038949'));//true System.out.println(Pattern.matches('[789][0-9]{9}', '9953038949'));//true System.out.println(Pattern.matches('[789][0-9]{9}', '99530389490'));//false (11 characters) System.out.println(Pattern.matches('[789][0-9]{9}', '6953038949'));//false (starts from 6) System.out.println(Pattern.matches('[789][0-9]{9}', '8853038949'));//true System.out.println('by metacharacters ...'); System.out.println(Pattern.matches('[789]{1}\d{9}', '8853038949'));//true System.out.println(Pattern.matches('[789]{1}\d{9}', '3853038949'));//false (starts from 3) }} Pruébalo ahora Ejemplo de buscador de expresiones regulares de Java
import java.util.regex.Pattern; import java.util.Scanner; import java.util.regex.Matcher; public class RegexExample8{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); while (true) { System.out.println('Enter regex pattern:'); Pattern pattern = Pattern.compile(sc.nextLine()); System.out.println('Enter text:'); Matcher matcher = pattern.matcher(sc.nextLine()); boolean found = false; while (matcher.find()) { System.out.println('I found the text '+matcher.group()+' starting at index '+ matcher.start()+' and ending at index '+matcher.end()); found = true; } if(!found){ System.out.println('No match found.'); } } } } Producción:
Enter regex pattern: java Enter text: this is java, do you know java I found the text java starting at index 8 and ending at index 12 I found the text java starting at index 26 and ending at index 30