Izvleči številke iz niza z uporabo regularnih izrazov Java

Sledijo primeri, ki kažejo, kako izvleči številke iz niza z uporabo regularnih izrazov v Javi.

Znanje razčlenjevanja nizov in pridobivanja informacij iz njih je ključna veščina, ki bi jo moral imeti vsak preizkuševalec. To je še posebej koristno pri preizkušanju API-jev in to morate razčlenite JSON ali odziv XML.

Naslednji primeri Java Regular Expression se osredotočajo na pridobivanje številk ali številk iz niza.




Izvleči vse številke 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());
}
} }

Izhod:

1234 567 890

Sorodno:




Izvleči n-to številko iz niza

Če želite iz niza izvleči samo določene številke, lahko group() navedete indeks funkcijo.

Na primer, če bi želeli iz niza string1234more567string890 izvleči le drugi niz števk, torej 567 potem lahko uporabimo:

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

Izhod:

567

Pojasnilo vzorca [^d]*[d]+[^d]+([d]+)


  • prezreti vse nedimestne vrednosti
  • prezre katero koli številko (prva številka)
  • spet prezre vse nedomestne številke
  • zajem druge številke


Izvleči številko iz atributa oznake

Ko gre za oznake XML ali HTML, je včasih treba iz atributa izvleči vrednost. Na primer, upoštevajte naslednjo oznako

Izvleči številko 9999 lahko uporabimo naslednjo kodo:

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

Izhod:


9999

Izvlecite niz, ki vsebuje številke in znake

Z regularnimi izrazi Java lahko izvlečete del niza, ki vsebuje števke in znake. Recimo, da imamo ta niz Sample_data = YOUR SET ADDRESS IS 6B1BC0 TEXT in želimo izvleči 6B1BC0 kateri je 6 znakov , lahko uporabimo:

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

Izhod:

6B1BC0

Izvlecite pare ključ / vrednost z regularnimi izrazi

Recimo, da imamo niz te oblike bookname=testing&bookid=123456&bookprice=123.45 in želimo izvleči par ključ-vrednost bookid=123456 uporabili bi:

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

Izhod:


123456