Regular Expressions
Patrones simples a juego
Buscar..
Haga coincidir un carácter de un solo dígito usando [0-9] o \ d (Java)
[0-9]
y \d
son patrones equivalentes (a menos que su motor Regex sea compatible con Unicode y \d
también coincida con cosas como). Ambos coincidirán con un carácter de un solo dígito para que pueda usar la notación que encuentre más legible.
Crea una cadena del patrón que deseas hacer coincidir. Si usa la notación \ d, deberá agregar una segunda barra diagonal inversa para escapar de la primera barra diagonal inversa.
String pattern = "\\d";
Crear un objeto de patrón. Pase la cadena de patrón en el método compile ().
Pattern p = Pattern.compile(pattern);
Crea un objeto Matcher. Pase la cadena que está buscando para encontrar el patrón en el método matcher (). Compruebe si se encuentra el patrón.
Matcher m1 = p.matcher("0");
m1.matches(); //will return true
Matcher m2 = p.matcher("5");
m2.matches(); //will return true
Matcher m3 = p.matcher("12345");
m3.matches(); //will return false since your pattern is only for a single integer
Coincidencia de varios números
[ab]
donde ayb son dígitos en el rango de 0
a 9
[3-7] will match a single digit in the range 3 to 7.
Coincidencia de varios dígitos
\d\d will match 2 consecutive digits
\d+ will match 1 or more consecutive digits
\d* will match 0 or more consecutive digits
\d{3} will match 3 consecutive digits
\d{3,6} will match 3 to 6 consecutive digits
\d{3,} will match 3 or more consecutive digits
El \d
en los ejemplos anteriores se puede reemplazar con un rango de números:
[3-7][3-7] will match 2 consecutive digits that are in the range 3 to 7
[3-7]+ will match 1 or more consecutive digits that are in the range 3 to 7
[3-7]* will match 0 or more consecutive digits that are in the range 3 to 7
[3-7]{3} will match 3 consecutive digits that are in the range 3 to 7
[3-7]{3,6} will match 3 to 6 consecutive digits that are in the range 3 to 7
[3-7]{3,} will match 3 or more consecutive digits that are in the range 3 to 7
También puede seleccionar dígitos específicos:
[13579] will only match "odd" digits
[02468] will only match "even" digits
1|3|5|7|9 another way of matching "odd" digits - the | symbol means OR
Números coincidentes en rangos que contienen más de un dígito:
\d|10 matches 0 to 10 single digit OR 10. The | symbol means OR
[1-9]|10 matches 1 to 10 digit in range 1 to 9 OR 10
[1-9]|1[0-5] matches 1 to 15 digit in range 1 to 9 OR 1 followed by digit 1 to 5
\d{1,2}|100 matches 0 to 100 one to two digits OR 100
Números coincidentes que se dividen por otros números:
\d*0 matches any number that divides by 10 - any number ending in 0
\d*00 matches any number that divides by 100 - any number ending in 00
\d*[05] matches any number that divides by 5 - any number ending in 0 or 5
\d*[02468] matches any number that divides by 2 - any number ending in 0,2,4,6 or 8
números coincidentes que se dividen por 4: cualquier número que sea 0, 4 u 8 o que finalice en 00, 04, 08, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60 64, 68, 72, 76, 80, 84, 88, 92 o 96
[048]|\d*(00|04|08|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96)
Esto se puede acortar. Por ejemplo, en lugar de usar 20|24|28
podemos usar 2[048]
. Además, como los años 40, 60 y 80 tienen el mismo patrón, podemos incluirlos: [02468][048]
y los otros también tienen un patrón [13579][26]
. Entonces toda la secuencia puede reducirse a:
[048]|\d*([02468][048]|[13579][26]) - numbers divisible by 4
Los números coincidentes que no tienen un patrón como los divisibles por 2,4,5,10, etc. no siempre se pueden hacer de manera sucinta y, por lo general, hay que recurrir a un rango de números. Por ejemplo, hacer coincidir todos los números que se dividen por 7 dentro del rango de 1 a 50 se puede hacer de manera simple al enumerar todos esos números:
7|14|21|28|35|42|49
or you could do it this way
7|14|2[18]|35|4[29]
Emparejando espacios en blanco iniciales / finales
Espacios finales
\s*$
: Esto coincidirá con cualquier ( *
) espacio en blanco ( \s
) al final ( $
) del texto
Espacios principales
^\s*
: Esto coincidirá con cualquier ( *
) espacio en blanco ( \s
) al principio ( ^
) del texto
Observaciones
\s
es un metacarácter común para varios motores RegExp, y está destinado a capturar caracteres de espacios en blanco (espacios, nuevas líneas y pestañas, por ejemplo). Nota : probablemente no capturará todos los caracteres de espacio Unicode . Revise la documentación de su motor para estar seguro de esto.
Empareja cualquier flotador
[\+\-]?\d+(\.\d*)?
Esto coincidirá con cualquier flotante firmado, si no quiere signos o está analizando una ecuación, elimine [\+\-]?
entonces tienes \d+(\.\d+)?
Explicación:
-
\d+
coincide con cualquier entero -
()?
significa que los contenidos de los paréntesis son opcionales pero siempre tienen que aparecer juntos - '\.' Partidos '.', tenemos que escapar de esto ya que ''. normalmente coincide con cualquier personaje
Así que esta expresión coincidirá
5
+5
-5
5.5
+5.5
-5.5
Seleccionar una línea determinada de una lista basada en una palabra en cierta ubicación
Tengo la siguiente lista:
1. Alon Cohen
2. Elad Yaron
3. Yaron Amrani
4. Yogev Yaron
Quiero seleccionar el primer nombre de los chicos con el apellido Yaron.
Ya que no me importa qué número es, solo lo pondré como el dígito que sea y el punto y el espacio que le siguen desde el principio de la línea, como este: ^[\d]+\.\s
.
Ahora tendremos que coincidir con el espacio y el primer nombre, ya que no podemos saber si es mayúscula o minúscula, solo coincidiremos con ambos: [a-zA-Z]+\s
o [aZ]+\s
y también puede ser [\w]+\s
.
Ahora especificaremos el apellido requerido para obtener solo las líneas que contienen Yaron como apellido (al final de la línea): \sYaron$
.
Poniendo todo esto junto ^[\d]+\.\s[\w]+\sYaron$
.
Ejemplo en vivo: https://regex101.com/r/nW4fH8/1