JavaRush /Blogue Java /Random-PT /Backlinks em expressões regulares Java
eGarmin
Nível 41

Backlinks em expressões regulares Java

Publicado no grupo Random-PT
As referências anteriores em expressões regulares Java são um recurso muito útil suportado pelo mecanismo Java . Para entender o que são backlinks, primeiro você precisa aprender a entender o que é um grupo . O grupo em expressões regulares trata vários caracteres como uma única unidade. Os grupos são criados colocando caracteres entre parênteses – “()”. Um par de parênteses é um grupo. Backlinks são convenientes porque podemos repetir padrões de pesquisa sem copiá-los diretamente. Precisamos apenas nos referir a um grupo previamente definido usando uma construção como \N , onde N é o número do grupo. Os 2 exemplos a seguir dão uma ideia da conveniência dos backlinks.
Exemplo 1: Encontrando um Padrão Repetitivo
Uma construção no formato (\d\d\d)\1 corresponde à linha 123123, mas não à linha 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()); } Saída: 1 123123 2 8 Nota do tradutor! Aqui, como tradutor, quero tomar um pouco de liberdade e inserir comentários meus, porque Estou aprendendo sobre expressões regulares e espero que eles me corrijam com palavrões :) se o que escrevo abaixo for um erro: 1) O método groupCount ( ) Retorna o número de grupos especificados no padrão, então mesmo se a string de entrada for "la123" 456 la", que não cabe no modelo, o número 1 ainda será exibido na tela. 2) O método find() Procura o próximo grupo, mas retorna apenas um valor booleano : verdadeiro – encontrado, falso – não encontrado 3) Método group() Retorna a última substring encontrada no padrão. Neste caso 123123 4) O método start() Retorna a posição da substring encontrada na string de origem (numeração, é claro, começando de zero) 5) O método end() Retorna a posição na string de origem imediatamente após a encontrada substring. Assim, este valor não aponta para o último caractere da substring encontrada na string de origem, mas para o próximo após ele.
Exemplo 2: Encontrando palavras duplicadas
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"); } Conclusão: Найденная последовательность символов: "unique is not duplicate but unique" Слово-дубликат: unique Найденная последовательность символов: "Duplicate is duplicate" Слово-дубликат: Duplicate Observe que este método de localização de palavras duplicadas (usando expressões regulares) não é o ideal. Por exemplo, no exemplo acima, a primeira palavra “duplicado” é ignorada.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION