Trích xuất số từ chuỗi bằng cách sử dụng biểu thức chính quy Java

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.




Trích xuất tất cả các 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:




Trích xuất chữ số thứ n từ một chuỗi

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]+)


  • bỏ qua bất kỳ chữ số nào
  • bỏ qua bất kỳ chữ số nào (số đầu tiên)
  • lại bỏ qua bất kỳ chữ số nào
  • nắm bắt số thứ hai


Trích xuất số từ thuộc tính thẻ

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

Trích xuất một chuỗi chứa các chữ số và ký tự

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

Trích xuất các cặp giá trị-khóa bằng biểu thức chính quy

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