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.
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:
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]+)
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
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
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