logo

Expresión regular de Java

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.

  1. Interfaz de resultado de coincidencia
  2. clase de emparejamiento
  3. Clase de patrón
  4. Clase PatternSyntaxException
API de expresiones regulares de Java

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étodoDescripción
1coincidencias booleanas()Pruebe si la expresión regular coincide con el patrón.
2búsqueda booleana()encuentra la siguiente expresión que coincide con el patrón.
3búsqueda booleana (int inicio)encuentra la siguiente expresión que coincide con el patrón del número inicial dado.
4Grupo de cadenas()devuelve la subsecuencia coincidente.
5int inicio()devuelve el índice inicial de la subsecuencia coincidente.
6pretender()devuelve el índice final de la subsecuencia coincidente.
7int 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étodoDescripción
1Compilación de patrón estático (expresión regular de cadena)compila la expresión regular dada y devuelve la instancia del patrón.
2Comparador de coincidencias (entrada CharSequence)crea un comparador que hace coincidir la entrada dada con el patrón.
3coincidencias 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.
4String[] split(entrada CharSequence)divide la cadena de entrada dada alrededor de coincidencias de un patrón dado.
5Patró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 personajeDescripció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 regularDescripció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 regularDescripción
.Cualquier carácter (puede coincidir o no con el terminador)
dCualquier dígito, menos de [0-9]
DCualquiera que no sea un dígito, abreviatura de [^0-9]
sCualquier carácter de espacio en blanco, abreviatura de [ x0Bf ]
SCualquier carácter que no sea un espacio en blanco, abreviatura de [^s]
EnCualquier carácter de palabra, abreviatura de [a-zA-Z_0-9]
ENCualquier carácter que no sea una palabra, abreviatura de [^w]
Un límite de palabras
BUn 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