Извлечете броеви од низата користејќи редовни изрази на Java

Следниве се примери кои покажуваат како да извлечете броеви од низа користејќи редовни изрази во Java.

Да се ​​биде во можност да ги анализира жиците и да извлекува информации од нив е клучна вештина што треба да ја има секој тестер. Ова е особено корисно при тестирање на API и треба анализира JSON или XML одговор.

Следните примери со Java Regular Expression се фокусираат на извлекување броеви или цифри од низа.




Извлечете ги сите броеви од низа

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