Regex: tudo que inicie ou termine com " - "

9 respostas
carol_programadora

Oi gente,

estou precisando fazer um regex onde preciso barrar toda palavra que inicie ou termine com hífen:

Inválido : -teste, teste-
Válido : tes-te

Tentei fazer o seguinte mas não funcionou para o “teste-”:

Pattern p = Pattern.compile(".+\\-[\\.$]"); 
  Matcher m = p.matcher("teste-");
       while (m.find()) {
       	System.out.println("Inválido");
       }

9 Respostas

Rodrigo_Sasaki

Tente assim:Pattern p = Pattern.compile("-\\w+|\\w+-");

carol_programadora

Obrigada Rodrigo,

mas ainda não me atendeu 100%, nesse caso os exemplos que citei:

Inválido : -teste, teste- Ok, pegou corretamente.
Válido : tes-tePegou esse também, esse não posso considerar para o que preciso.

Aplicando esse regex trouxe também o “tes-te”, tenho que fazer um que não venha o “tes-te”, mas considere “-teste” e “teste-”, eu preciso barrar somente se iniciar ou terminar com hífen, no meio de uma palavra eu tenho que desconsiderar.

Rodrigo_Sasaki

Você tem que tratar os espaços :slight_smile:

Use âncoras, vão te ajudar. (Eu poderia dar a solução, mas aí qual seria a graça? :))

aix

porque não utiliza os métodos do java.lang.String como: endsWith("-") e startsWith("-") ?

Rodrigo_Sasaki

Porque podem haver hifens no meio da String.

aix

exato, os do meio da String ela não quer considerar :wink:

Rodrigo_Sasaki

Não, os que estão no meio da palavra ela não quer considerar.

No meio da palavra: "tes-te" No meio da String:"teste- teste"Pelo menos foi isso que eu entendi

E
String regex = "(^-)|(-$)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("-teste");
while(matcher.find()){
	 System.out.println("Inválido");
}
carol_programadora

Obrigada a todos, esqueci de agradecer no dia :roll:

Essa solução abaixo era exatamente o que eu precisava.

ericrf:
String regex = "(^-)|(-$)"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher("-teste"); while(matcher.find()){ System.out.println("Inválido"); }

Criado 23 de janeiro de 2013
Ultima resposta 29 de jan. de 2013
Respostas 9
Participantes 4