La jenaj estas ekzemploj, kiuj montras kiel ĉerpi nombrojn el ĉeno uzante regulajn esprimojn en Java.
Povi analizi kordojn kaj ĉerpi informojn de ĝi estas ŝlosila kapablo, kiun ĉiu testanto devas havi. Ĉi tio estas aparte utila dum provado de API kaj vi bezonas analizi JSON aŭ XML-respondo.
La jenaj ekzemploj de Ĝava Regula Esprimo fokusiĝas al ĉerpado de nombroj aŭ ciferoj de Ĉeno.
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());
}
} }
Eligo:
1234 567 890
Rilataj:
Se vi volas ĉerpi nur iujn nombrojn el ĉeno, vi povas doni indekson al la group()
funkcio.
Ekzemple, se ni volus nur ĉerpi la duan aron de ciferoj el la ĉeno string1234more567string890
, do 567
tiam ni povas uzi:
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
}
} }
Eligo:
567
Klarigo de la Skemo [^d]*[d]+[^d]+([d]+)
Traktante XML aŭ HTML-etikedojn, foje necesas ĉerpi valoron de atributo. Ekzemple, konsideru la jenan etikedon
Por ĉerpi numeron 9999
ni povas uzi la jenan kodon:
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));
}
} }
Eligo:
9999
Vi povas uzi Ĝavan regulajn esprimojn por ĉerpi parton de Ĉeno, kiu enhavas ciferojn kaj signojn. Supozu, ke ni havas ĉi tiun ĉenon Sample_data = YOUR SET ADDRESS IS 6B1BC0 TEXT
kaj ni volas ĉerpi 6B1BC0
kiu estas 6 signoj longa , ni povas uzi:
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
}
} }
Eligo:
6B1BC0
Ni supozu, ke ni havas ĉenon de ĉi tiu formato bookname=testing&bookid=123456&bookprice=123.45
kaj ni volas ĉerpi la ŝlosilon-valoran paron bookid=123456
ni uzus:
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());
}
} }
Eligo:
123456