Expressão regular não funciona

5 respostas
P

Olá a todos,

Estou tentando dar match em uma String com regex, porém não funciona, vejam como a string vem:

Members:           Eth1/6 (static, tagged)

Eu preciso pegar somente a parte (Eth1/6 (static, tagged), ou seja qualquer coisa seguida de: Eth1/\d{1|2} (static, tagged), obs.: depois do Eth1/(um ou dos digitos que variam de acordo com a String. Fiz como segue abaixo, porem não funcionou:

private static final String REGEX_ETH_TAGGED = ".*Eth1/6 (static, tagged)";

Fiz uma outra coisa, criei um método que retornasse somente essa string e depois fazer o parse para tentar pegar os digitos, também não funcionou.

Alguém sabe o que pode estar ocorrendo. Osb.: essa string é retornada via telnet recuperando informações de um switch ethernet.

Att,

Paulo

5 Respostas

P

só para constar, tentei simular o teste assim:

String teste = "Eth1/6 (static, tagged)";
                            if(teste.matches("Eth1/6 (static, tagged)")){
                                System.out.println("achou");
                            }

Também não acha…

P

Pessoal, não acha por causa dos (), tenho que colocar a barra antes \, tipo:

if(teste.matches("Eth1/6 \\(static, tagged\\)")){
                                System.out.println("achou");
                            }

Falta de atenção mesmo!!!

ViniGodoy

Outra forma é usar o Pattern.quote. É o ideal se você quiser expressões regulares para um texto fixo:

String teste = Pattern.quote("Eth1/6 (static, tagged)");
peczenyj

() são grupos

thiagodelgado

Sei que o forum aqui é de Java, mas queria deixar uma dica aos amigos, caso precisem checar se um pattern tá certinho, ou até mesmo criar um de última hora (não pergunte!)
Nesse site aqui tem um editor de regular expression, que mostra os matches e tal, tem até um apêndice mostrando um pouco da sintaxe das regex’s, aqui vai:

http://rubular.com/

Abraço!

Criado 5 de agosto de 2011
Ultima resposta 5 de ago. de 2011
Respostas 5
Participantes 4