Izdvajanje brojeva iz niza pomoću Java regularnih izraza

Slijede primjeri koji pokazuju kako izvući brojeve iz niza pomoću regularnih izraza u Javi.

Mogućnost raščlanjivanja žica i izvlačenja informacija ključna je vještina koju bi svaki tester trebao imati. Ovo je posebno korisno kada testirate API-je i morate raščlanite JSON ili XML odgovor.

Sljedeći primjeri Java regularnog izraza fokusiraju se na izdvajanje brojeva ili znamenki iz niza.




Izdvoji sve brojeve iz niza

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());
}
} }

Izlaz:

1234 567 890

Povezani:




Izdvoji n-tu znamenku iz niza

Ako želite izdvojiti samo određene brojeve iz niza, možete dati indeks na group() funkcija.

Na primjer, ako smo željeli izvući samo drugi niz cifara iz niza string1234more567string890, tj. 567 onda možemo koristiti:

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
}
} }

Izlaz:

567

Objašnjenje obrasca [^d]*[d]+[^d]+([d]+)


  • zanemariti bilo koji neznamenkasti
  • zanemari bilo koju znamenku (prvi broj)
  • opet zanemarite bilo koji neznamenkasti
  • uhvati drugi broj


Izdvajanje broja iz atributa oznake

Kada se radi s XML ili HTML oznakama, ponekad postoji potreba za izdvajanjem vrijednosti iz atributa. Na primjer, uzmite u obzir sljedeću oznaku

Za izdvajanje broja 9999 možemo koristiti sljedeći kod:

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));
}
} }

Izlaz:


9999

Izdvoj niz koji sadrži znamenke i znakove

Java regularne izraze možete koristiti za izdvajanje dijela niza koji sadrži znamenke i znakove. Pretpostavimo da imamo ovaj niz Sample_data = YOUR SET ADDRESS IS 6B1BC0 TEXT i želimo izdvojiti 6B1BC0 koji je 6 znakova , možemo koristiti:

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
}
} }

Izlaz:

6B1BC0

Izdvojite parove ključ / vrijednost s regularnim izrazima

Pretpostavimo da imamo niz ovog formata bookname=testing&bookid=123456&bookprice=123.45 i želimo izdvojiti par ključ / vrijednost bookid=123456 koristili bismo:

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());
}
} }

Izlaz:


123456