Mais uma vez, por não ter acesso a outros sites no trabalho, venho fazer uma pergunta cuja resposta seria facilmente encontrada no google.
Já dei uma olhada nos topicos sobre regex no GUJ mas nao encontrei o que preciso.
Sei pouco sobre regex. Também sei que o que quero é possível, só nao lembro como.
Gostaria de saber como definir que o primeiro caracter deve estar dentro de um conjunto e o restante dentro de outro conjunto?
A expressão significa um caracter no conjunto [A-Za-Z] e o restante no conjunto [A-Za-z0-9_], o caracter ‘+’ indica que existirá de 1 a N ocorrências do conjunto precedente.
Dica: expressões regulares são como matemática - uma coisa depende de outra e se você não aprender direitinho desde o começo, não dá para você usar direito. Não dá para saber as coisas “picado” só consultando no GUJ - até porque você pode ter exemplos errados que só por acaso funcionaram
Uma forma de você aprender direitinho sobre expressões regulares é consultar o site:
A expressão significa um caracter no conjunto [A-Za-Z] e o restante no conjunto [A-Za-z0-9_], o caracter ‘+’ indica que existirá de 1 a N ocorrências do conjunto precedente.[/quote]
Cara, obrigado pela explicação sobre o metachar ‘+’.
Porém não funcionou:
String string = "abc";
Pattern p = Pattern.compile("[A-Za-z][A-Za-z0-9_]+");
Matcher m = p.matcher(string);
System.out.println(m.find());
O syso imprime “true” pra string igual a “abc” ou “1abc”;
Obrigado pela dica, eu entendo o que quer dizer. Infelizmente o unico site liberado aqui no trabalho é o guj e não há livros para consulta.
Vou dar uma olhada no link em casa. Valeu!
Mas enquanto isso, alguém pode dar outra sugestão?
Utilize ao invés do find() o método matches() pois ele valida a sequência de todo o conjunto, ou seja válida o regex como um todo e não por partes como o método find().
Ficando seu código da seguinte forma.
String string = "abc";
Pattern p = Pattern.compile("[A-Za-z][A-Za-z0-9_]+");
Matcher m = p.matcher(string);
System.out.println(m.matches());
[quote=entanglement]Dica: expressões regulares são como matemática - uma coisa depende de outra e se você não aprender direitinho desde o começo, não dá para você usar direito. Não dá para saber as coisas “picado” só consultando no GUJ - até porque você pode ter exemplos errados que só por acaso funcionaram
Uma forma de você aprender direitinho sobre expressões regulares é consultar o site:
Obrigado, Big E. Troquei o find() por matches() e funcionou legal. O javadoc diz exatamente o que vc falou. Valeu!
E entanglement, não sei qual é a da empresa. Ridículo isso de simplesmente bloquear tudo. Até no GUJ eu tenho que ficar copiando os links das consultas e colando na barra de endereço pq simplesmente clicar no link não funciona. Só em casa mesmo pra ver essas coisas. Mas valeu a dica!