Следниве се примери кои покажуваат како да извлечете броеви од низа користејќи редовни изрази во 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
Поврзано:
Ако сакате да извлечете само одредени броеви од низата, можете да дадете индекс на 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