Computer >> Máy Tính >  >> Lập trình >> Java

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 phản hồi JSON hoặc 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:

  • Cách chuyển đổi Chuỗi thành Int trong Java
  • Cách đảo ngược các chuỗi trong Java
  • Cách so sánh các chuỗi trong Java

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 tôi 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 về 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

<result name="response" numFound="9999" start="0">

Để 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 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 khóa-giá trị bằng biểu thức chính quy

Giả sử chúng ta có một chuỗi đị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