JavaRush /Java Blog /Random-IT /Backlink nelle espressioni regolari Java
eGarmin
Livello 41

Backlink nelle espressioni regolari Java

Pubblicato nel gruppo Random-IT
I riferimenti all'indietro nelle espressioni regolari Java sono una funzionalità molto utile supportata dal motore Java . Per poter capire cosa sono i backlink bisogna prima imparare a capire cos’è un gruppo . Il gruppo nelle espressioni regolari tratta più caratteri come una singola unità. I gruppi vengono creati inserendo i caratteri tra parentesi – “()”. Una coppia di parentesi è un gruppo. I backlink sono convenienti perché possiamo ripetere i modelli di ricerca senza copiarli direttamente. Dobbiamo solo fare riferimento a un gruppo precedentemente definito utilizzando una costruzione come \N , dove N è il numero del gruppo. I seguenti 2 esempi ti danno un'idea della comodità dei backlink.
Esempio 1: trovare uno schema ripetuto
Una costruzione della forma (\d\d\d)\1 corrisponde alla riga 123123, ma non alla riga 123456. String str = "ля123123ля"; Pattern p = Pattern.compile("(\\d\\d\\d)\\1"); Matcher m = p.matcher(str); System.out.println(m.groupCount()); while (m.find()) { String word = m.group(); System.out.println(word + " " + m.start() + " " + m.end()); } Risultato: 1 123123 2 8 Nota del traduttore! Qui, come traduttore, voglio prendermi un po' di libertà e inserire commenti miei, perché Sto imparando da poco le espressioni regolari e spero che mi correggano con parolacce :) se quello che scrivo di seguito è un errore: 1) Il metodo groupCount () Restituisce il numero di gruppi specificati nel modello, quindi anche se la stringa di input è "la123" 456 la", che non rientra nel template, sullo schermo verrà comunque visualizzato il numero 1. 2) Il metodo find() Cerca il gruppo successivo, ma restituisce solo un valore booleano : true – trovato, false – non trovato 3) Metodo group() Restituisce l'ultima sottostringa trovata dal modello. In questo caso 123123 4) Il metodo start() Restituisce la posizione della sottostringa trovata nella stringa sorgente (numerazione, ovviamente, a partire da zero) 5) Il metodo end() Restituisce la posizione nella stringa sorgente immediatamente successiva alla sottostringa trovata sottostringa. Pertanto, questo valore non punta all'ultimo carattere della sottostringa trovata nella stringa di origine, ma a quello successivo.
Esempio 2: ricerca di parole duplicate
String pattern = "\\b(\\w+)\\b[\\w\\W]*\\b\\1\\b"; Pattern p = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE); String phrase = "unique is not duplicate but unique, Duplicate is duplicate."; Matcher m = p.matcher(phrase); while (m.find()) { String val = m.group(); System.out.println("Найденная последовательность символов: \"" + val + "\""); System.out.println("Слово-дубликат: " + m.group(1) + "\n"); } Conclusione: Найденная последовательность символов: "unique is not duplicate but unique" Слово-дубликат: unique Найденная последовательность символов: "Duplicate is duplicate" Слово-дубликат: Duplicate tieni presente che questo metodo per trovare parole duplicate (usando espressioni regolari) non è ottimale. Ad esempio, nell'esempio sopra, la prima parola "duplicato" viene saltata.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION