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