Sau đây là các ví dụ cho thấy cách trích xuất số từ một chuỗi bằng cách sử dụng biểu thức chính quy trong Java.
Có thể phân tích cú pháp các chuỗi và trích xuất thông tin từ nó là một kỹ năng quan trọng mà mọi người thử nghiệm cần phải có. Điều này đặc biệt hữu ích khi kiểm tra các API và bạn cần phân tích cú pháp JSON hoặc phản hồi XML.
Các ví dụ về Biểu thức chính quy Java sau đây tập trung vào việc trích xuất các số hoặc chữ số từ một Chuỗi.
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());
}
} }
Đầu ra:
1234 567 890
Có liên quan:
Nếu bạn chỉ muốn trích xuất một số số nhất định từ một chuỗi, bạn có thể cung cấp chỉ mục cho group()
chức năng.
Ví dụ, nếu chúng ta chỉ muốn trích xuất bộ chữ số thứ hai từ chuỗi string1234more567string890
, tức là 567
thì chúng ta có thể sử dụng:
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
}
} }
Đầu ra:
567
Giải thích mẫu [^d]*[d]+[^d]+([d]+)
Khi xử lý các thẻ XML hoặc HTML, đôi khi cần phải trích xuất một giá trị từ một thuộc tính. Ví dụ: hãy xem xét thẻ sau
Để trích xuất số 9999
chúng ta có thể sử dụng mã sau:
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));
}
} }
Đầu ra:
9999
Bạn có thể sử dụng biểu thức chính quy Java để trích xuất một phần của Chuỗi chứa các chữ số và ký tự. Giả sử chúng ta có chuỗi này Sample_data = YOUR SET ADDRESS IS 6B1BC0 TEXT
và chúng tôi muốn giải nén 6B1BC0
cái nào là Dài 6 ký tự , chúng ta có thể sử dụng:
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
}
} }
Đầu ra:
6B1BC0
Giả sử chúng ta có một chuỗi có định dạng này bookname=testing&bookid=123456&bookprice=123.45
và chúng tôi muốn trích xuất cặp khóa-giá trị bookid=123456
chúng tôi sẽ sử dụng:
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());
}
} }
Đầu ra:
123456