Далей прыведзены прыклады, якія паказваюць, як выняць лічбы з радка, выкарыстоўваючы рэгулярныя выразы ў 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
Звязаныя:
Калі вы хочаце вылучыць з радка толькі пэўныя лічбы, вы можаце ўказаць індэкс 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