Boa tarde!
Sempre tive muita dificuldade com Regex.
Será que alguém poderia me ajudar a achar o caminho das pedras por favor?
Preciso fazer o seguinte tratamento em uma String:
_ preciso obter todos os números até que se encontre um caracter que não seja número. O primeiro caracter da String pode ser ‘+’. Exemplo:
+40045678efd - deve retornar +40045678
40045678+5678 - deve retornar 40045678
Ebs40056789 - deve retornar vazio
/(^[+]?\\d+)/g é sintaxe do JavaScript, não do Java. Em JavaScript, as barras são delimitadores (indicam o início e fim da expressão, mas não fazem parte da regex em si) e o g é uma das várias flags que mudam o comportamento da regex.
Mas em Java não tem isso, não se coloca as barras e nem o g:
String text = "+123abc456";
Pattern pattern = Pattern.compile("^[+]?\\d+");
Matcher matcher = pattern.matcher(text);
if (matcher.find()) {
System.out.println(matcher.group()); // +123
}
E em vez de [+] também poderia ser \+, ou seja: Pattern.compile("^\\+?\\d+");.