Выманне нумароў з радка з дапамогай рэгулярных выразаў Java

Далей прыведзены прыклады, якія паказваюць, як выняць лічбы з радка, выкарыстоўваючы рэгулярныя выразы ў Java.

Уменне разбіраць радкі і здабываць з іх інфармацыю - гэта ключавы навык, якім павінен валодаць кожны тэстар. Гэта асабліва карысна пры тэставанні API і вам трэба прааналізаваць JSON альбо XML-адказ.

Наступныя прыклады рэгулярных выразаў Java сканцэнтраваны на выманні лічбаў або лічбаў з радка.




Выняць усе лічбы з радка

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

Выхад:

1234 567 890

Звязаныя:




Выняць n-ю лічбу з радка

Калі вы хочаце вылучыць з радка толькі пэўныя лічбы, вы можаце ўказаць індэкс group() функцыя.

Напрыклад, калі мы хацелі выцягнуць толькі другі набор лічбаў з радка string1234more567string890, гэта значыць 567 тады мы можам выкарыстоўваць:

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

Выхад:

567

Тлумачэнне шаблону [^d]*[d]+[^d]+([d]+)


  • ігнараваць любыя незначныя лічбы
  • ігнараваць любую лічбу (першая лічба)
  • зноў ігнаруем любыя незначныя лічбы
  • захапіць другі нумар


Выняць нумар з атрыбута тэга

Пры працы з тэгамі XML або HTML часам узнікае неабходнасць вылучыць значэнне з атрыбута. Напрыклад, разгледзім наступны тэг

Для вылучэння нумара 9999 мы можам выкарыстоўваць наступны код:

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

Выхад:


9999

Вылучыце радок, які змяшчае лічбы і сімвалы

Вы можаце выкарыстоўваць рэгулярныя выразы Java для вылучэння часткі радка, якая змяшчае лічбы і сімвалы. Дапусцім, у нас ёсць гэты радок Sample_data = YOUR SET ADDRESS IS 6B1BC0 TEXT і мы хочам атрымаць 6B1BC0 які 6 сімвалаў , мы можам выкарыстоўваць:

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

Выхад:

6B1BC0

Вылучыце пары ключ-значэнне з рэгулярнымі выразамі

Дапусцім, у нас ёсць радок такога фармату bookname=testing&bookid=123456&bookprice=123.45 і мы хочам вылучыць пару ключ-значэнне bookid=123456 мы б выкарысталі:

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

Выхад:


123456