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