Следват примери, които показват как да извлечете числа от низ, използвайки регулярни изрази в 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