Como pegar um dado que é o delimitador Regex

Galera eu precisava pegar determinados pedaços de informações numa String, o problema que o dado é o único jeito de delimitar.

Seria assim:


String x = "1.10.20.30 BLA BLA BLA XX87954 XX OUTRO 1234.566 TESTE QUALQUER LIXO NA STRING 1.20.40.50 ";

Vejam só, o que eu preciso é recuperar o 1.10.20.30 e 1.20.40.50

Eu poderia usar o .split(“regex”) no qual eu colocaria esse padrao n.nn.nn.nn, mas ai eu obtenho justamente o que eu NÃO quero que é o restante do lixo.

O problema que tirando esse dado que eu quero, o resto não tem um padrão, não tenho separar por letra, ou espaço em branco, a resposta é de um legado e não tem como ser alterado.

Alguém sabe uma forma de pegar dado por um REGEX ? e não delimitar como é o padrão.

A única coisa padrão na String é justamente o dado que eu quero… e até agora só pensei em percorrer caracter um por um, mas a resposta é muito, muito grande, então pensei que poderia existir uma solução que ainda nao conheço.

Ok, vamos lá. Você só quer pegar as coisas que são dígitos com pontos, certo?

import java.util.regex.*;

class TesteRegex3 {
    public static void main(String[] args) {
        String x = "1.10.20.30 BLA BLA BLA XX87954 XX OUTRO 1234.566 TESTE QUALQUER LIXO NA STRING 1.20.40.50 "; 
        Pattern pat = Pattern.compile ("\d+\.\d+\.\d+\.\d+");
        Matcher mat = pat.matcher (x);
        while (mat.find()) {
            System.out.println (mat.group());
        }
    }
}

A saída é:

1.10.20.30
1.20.40.50

Obrigado Thingol era exatamente isso que eu precisava. Nota 1000