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