Ĉerpu Nombrojn De Ĉeno Uzante Ĝavan Regulajn Esprimojn

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.




Ĉerpu Ĉiujn Nombrojn el Ĉ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:




Ĉerpu enan Ciferon de Ĉeno

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


  • ignori iujn ciferecajn
  • ignori ajnan ciferon (unua numero)
  • denove ignoru iun ajn ciferecan
  • kaptu la duan numeron


Ĉerpu Numeron de Etiketa Atributo

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

Ĉerpu Ĉenon Enhavantan Ciferojn kaj Signojn

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

Ĉerpu Ŝlosil-Valorajn Parojn Kun Regulaj Esprimoj

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