Separo números de letras de uma string com expressoes regulares mas ñ consigo somar os números

Preciso separar e somar os números de uma string, a parte de separar foi moleza usando expressões regulares, encontrei como fazer, mas não consigo somar os números que achei. Para melhor exemplificar, a string seria algo como “123abc123” e a saída (ou resultado) deveria ser “246” e não “123123” como está acontecendo.

Abaixo, fiz o código que separa números de letras mas não consigo somar o resultado dos números.

AGRADEÇO ANTECIPADAMENTE A AJUDA DOS HABILIDOSOS COLEGAS

Segue o pequeno código:


public class QuestaoCinco {

	public static void main(String[] args) {
		
		String dado = "123abc123";  
		  
		String dadoNumeros = dado.replaceAll("\\D*", "");  
		String dadoLetras = dado.replaceAll("\\d*", ""); 
		
	System.out.println(dadoNumeros);
	System.out.println(dadoLetras);
		
		//a saída está 
		//123123
		//abc
		//mas eu preciso que seja 246
		
	}
}

Tu não separaste as letras dos números mas simplesmente retiraste todas as letras. Quando chegas ao teu valor 123123, não sabes sequer se isso era “123 123”, “12 31 12” ou “123123” ou qualquer uma das outras combinações possíveis.

O que tu realmente queres é :

public static void main(String... args) {
    String dado = "123abc123";

    Pattern pattern = Pattern.compile("\\d+");
    Matcher matcher = pattern.matcher(dado);

    int pos = 0;
    while (matcher.find(pos)) {
        System.out.println(matcher.group() );
        pos = matcher.end();
    }
}

A partir daqui já deves conseguir fazer facilmente o que queres.

Muitíssimo obrigado, era exatamente isso!
Agora vou procurar como somar o resultado que ficou mais fácil.

pmlm, valeu mesmo pela dica.
preciso que a saída seja a soma dos números listados
Tentei o dia todo hoje somar esses números do mach.group() e não consegui nada…
Como eu poderia somar este array?

Se não for abusar, vc ou algum outro colega pode me ajudar?

Basta transformar essa string em inteiro e ir somando…