2
respostas

Resolução

Troquei o regex do exemplo da aula para

        String regex = ("#[\\wçãéíóúáê]+");

para poder captar "programação", com ç e ã
Tb não cliei um array, tem problema?

package br.com.ddmdros.exercicios;

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class alura9 {
    /*
    Patrícia está desenvolvendo um sistema de análise de redes sociais
    e precisa extrair todas as hashtags de um texto. Ela quer um programa
    que encontre todas as palavras que começam com "#".
    Crie um programa que receba um texto e exiba todas as hashtags
    encontradas.
     */
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Digite o texto: ");
        String texto = scanner.nextLine();
        //String textoTeste = "Olá #mundo! Estou aprendendo #Java e #programação.";
        String regex = ("#[\\wçãéíóúáê]+");

        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(texto);

        System.out.println("Hashtags encontradas: ");
        while (matcher.find()){
            System.out.println(matcher.group());
        }
    }
}
2 respostas

Oi, Diogo! Como vai?

Você fez bem em ajustar a expressão regular para incluir caracteres acentuados e cedilha. Isso garante que hashtags como #programação sejam capturadas corretamente.

Não criar um array não é problema se a intenção for apenas exibir as hashtags. Criar uma lista ou array seria necessário apenas se você quisesse armazená-las para uso posterior.

Veja este exemplo:


String regex = "#[\\wçãéíóúáê]+"; // Captura hashtags com caracteres especiais
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(texto);

while (matcher.find()) {
    System.out.println(matcher.group());
}

Explicação rápida:

  • #[\wçãéíóúáê]+ → Procura pelo caractere # seguido de letras, números, underline e caracteres acentuados listados.
  • matcher.find() → Localiza cada ocorrência no texto.
  • matcher.group() → Retorna a hashtag encontrada.

Versão sem acentos:


String regex = "#[\\w]+"; 

Essa versão só captura letras, números e underline.

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Show!