Extraia números de string usando expressões regulares Java

A seguir estão exemplos que mostram como extrair números de uma string usando expressões regulares em Java.

Ser capaz de analisar strings e extrair informações delas é uma habilidade fundamental que todo testador deve ter. Isso é particularmente útil ao testar APIs e você precisa analisar um JSON ou resposta XML.

Os seguintes exemplos de Expressão Regular Java focam na extração de números ou dígitos de uma String.




Extraia todos os números de uma string

import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexExamples {
public static void main(String[]args) {
Pattern p = Pattern.compile('\d+');
Matcher m = p.matcher('string1234more567string890');
while(m.find()) {

System.out.println(m.group());
}
} }

Resultado:

1234 567 890

Relacionado:




Extraia o enésimo dígito de uma string

Se quiser extrair apenas alguns números de uma string, você pode fornecer um índice para o group() função.

Por exemplo, se quisermos extrair apenas o segundo conjunto de dígitos da string string1234more567string890, ou seja, 567 então podemos usar:

import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexExamples {
private static final Pattern p = Pattern.compile('[^\d]*[\d]+[^\d]+([\d]+)');
public static void main(String[] args) {
// create matcher for pattern p and given string
Matcher m = p.matcher('string1234more567string890');

// if an occurrence if a pattern was found in a given string...
if (m.find()) {

System.out.println(m.group(1)); // second matched digits
}
} }

Resultado:

567

Explicação do padrão [^d]*[d]+[^d]+([d]+)


  • ignore qualquer não-dígito
  • ignore qualquer dígito (primeiro número)
  • novamente ignore qualquer não-dígito
  • capture o segundo número


Extrair número de um atributo de tag

Ao lidar com tags XML ou HTML, às vezes é necessário extrair um valor de um atributo. Por exemplo, considere a seguinte tag

Para extrair número 9999 podemos usar o seguinte código:

import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexExamples {
public static void main(String[]args) {
Pattern pattern = Pattern.compile('numFound='([0-9]+)'');
Matcher matcher = pattern.matcher('');

if (matcher.find()) {

System.out.println(matcher.group(1));
}
} }

Resultado:


9999

Extraia uma string contendo dígitos e caracteres

Você pode usar expressões regulares Java para extrair uma parte de uma String que contém dígitos e caracteres. Suponha que temos esta string Sample_data = YOUR SET ADDRESS IS 6B1BC0 TEXT e queremos extrair 6B1BC0 qual é 6 caracteres de comprimento , podemos usar:

import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexExamples {
public static void main (String[] args) {
Pattern p = Pattern.compile('YOUR SET ADDRESS IS\s+([A-Z0-9]{6})');
Matcher n = p.matcher('YOUR SET ADDRESS IS 6B1BC0 TEXT');
if (n.find()) {

System.out.println(n.group(1)); // Prints 123456
}
} }

Resultado:

6B1BC0

Extraia pares de valores-chave com expressões regulares

Suponhamos que temos uma string neste formato bookname=testing&bookid=123456&bookprice=123.45 e queremos extrair o par de valores-chave bookid=123456 nós usaríamos:

import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexExamples {
public static void main(String[] args) {
String s = 'bookname=cooking&bookid=123456&bookprice=123.45';
Pattern p = Pattern.compile('(?<=bookid=)\d+');
Matcher m = p.matcher(s);
if (m.find()) {

System.out.println(m.group());
}
} }

Resultado:


123456