Regular Expressions
Modelli semplici corrispondenti
Ricerca…
Abbina un carattere a una cifra usando [0-9] o \ d (Java)
[0-9]
e \d
sono modelli equivalenti (a meno che il tuo motore Regex non sia compatibile con Unicode e \d
corrisponda anche a cose come ②). Entrambi corrisponderanno a un carattere a una sola cifra in modo da poter utilizzare qualsiasi notazione che trovi più leggibile.
Crea una stringa del modello che desideri abbinare. Se si utilizza la notazione \ d, sarà necessario aggiungere una seconda barra rovesciata per evitare la prima barra retroversa.
String pattern = "\\d";
Crea un oggetto Pattern. Passa la stringa del modello nel metodo compile ().
Pattern p = Pattern.compile(pattern);
Crea un oggetto Matcher. Passa la stringa che stai cercando per trovare il pattern nel metodo matcher (). Controlla se il modello è stato trovato.
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
Corrispondenti a vari numeri
[ab]
dove a e b sono cifre nell'intervallo da 0
a 9
[3-7] will match a single digit in the range 3 to 7.
Abbinamento di più cifre
\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
Il \d
negli esempi precedenti può essere sostituito con un intervallo di numeri:
[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
Puoi anche selezionare cifre specifiche:
[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
Numeri corrispondenti in intervalli che contengono più di una cifra:
\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
Numeri corrispondenti che si dividono per altri numeri:
\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
numeri corrispondenti che dividono per 4 - qualsiasi numero che sia 0, 4 o 8 o che termina in 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)
Questo può essere abbreviato. Ad esempio, invece di usare 20|24|28
possiamo usare 2[048]
. Inoltre, dato che gli anni '40, '60 e '80 hanno lo stesso schema, possiamo includerli: [02468][048]
e anche gli altri hanno un pattern [13579][26]
. Quindi l'intera sequenza può essere ridotta a:
[048]|\d*([02468][048]|[13579][26]) - numbers divisible by 4
I numeri corrispondenti che non hanno un modello come quelli divisibili per 2,4,5,10 ecc. Non possono sempre essere eseguiti in modo succinto e di solito si deve ricorrere a una serie di numeri. Ad esempio, l'abbinamento di tutti i numeri che dividono per 7 nell'intervallo da 1 a 50 può essere fatto semplicemente elencando tutti i numeri:
7|14|21|28|35|42|49
or you could do it this way
7|14|2[18]|35|4[29]
Spazio bianco iniziale / finale corrispondente
Spazi finali
\s*$
: Questo corrisponderà a qualsiasi ( *
) spazio ( \s
) alla fine ( $
) del testo
Spazi principali
^\s*
: Questo corrisponderà a qualsiasi ( *
) spazio bianco ( \s
) all'inizio ( ^
) del testo
Osservazioni
\s
è un metacarattere comune per diversi motori RegExp e ha lo scopo di acquisire caratteri di spazi bianchi (spazi, linee nuove e schede, ad esempio). Nota : probabilmente non catturerà tutti i caratteri dello spazio unicode . Controlla la documentazione del tuo motore per essere sicuro di questo.
Abbina qualsiasi galleggiante
[\+\-]?\d+(\.\d*)?
Questo corrisponderà a qualsiasi float firmato, se non vuoi i segni o stai analizzando un'equazione rimuovi [\+\-]?
quindi hai \d+(\.\d+)?
Spiegazione:
-
\d+
corrisponde a qualsiasi intero -
()?
significa che i contenuti delle parentesi sono facoltativi ma devono sempre apparire insieme - '\'. corrisponde a ".", dobbiamo scappare da quando "." normalmente corrisponde a qualsiasi carattere
Quindi questa espressione corrisponderà
5
+5
-5
5.5
+5.5
-5.5
Selezione di una determinata linea da un elenco basato su una parola in una determinata posizione
Ho il seguente elenco:
1. Alon Cohen
2. Elad Yaron
3. Yaron Amrani
4. Yogev Yaron
Voglio selezionare il nome dei ragazzi con il cognome Yaron.
Dal momento che non mi interessa quale numero è, lo metto come una qualsiasi cifra e un punto e uno spazio corrispondenti dopo l'inizio della riga, in questo modo: ^[\d]+\.\s
.
Ora dovremo abbinare lo spazio e il nome, dal momento che non siamo in grado di capire se si tratta di lettere maiuscole o minuscole, abbineremo semplicemente entrambi: [a-zA-Z]+\s
o [aZ]+\s
e può anche essere [\w]+\s
.
Ora specificheremo il cognome richiesto per ottenere solo le righe contenenti Yaron come cognome (alla fine della riga): \sYaron$
.
Mettendo tutto insieme ^[\d]+\.\s[\w]+\sYaron$
.
Esempio dal vivo: https://regex101.com/r/nW4fH8/1