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

Làm cách nào để trích xuất một thẻ HTML từ một Chuỗi bằng cách sử dụng regex trong Java?

Gói java.util.regex của java cung cấp nhiều lớp khác nhau để tìm các mẫu cụ thể trong chuỗi ký tự.

Mẫu lớp của gói này là một đại diện đã biên dịch của một biểu thức chính quy. Để đối sánh một biểu thức chính quy với một Chuỗi, lớp này cung cấp hai phương thức cụ thể là -

  • biên dịch () - Phương thức này chấp nhận một Chuỗi đại diện cho một biểu thức chính quy và trả về một đối tượng của Mẫu lớp.

  • trình đối sánh () - Phương thức này chấp nhận một giá trị Chuỗi và tạo một đối tượng đối sánh khớp với Chuỗi đã cho với mẫu được đại diện bởi đối tượng mẫu hiện tại.

Người đối sánh lớp của gói java.util.regex là một công cụ thực hiện các hoạt động đối sánh. Để tìm giá trị phù hợp, bạn cần sử dụng hai phương thức của lớp này là -

  • find () - Phương thức này trả về true nếu hoạt động so khớp được đại diện bởi đối tượng hiện tại thành công, phương thức này trả về false.

  • nhóm () - Phương thức này chấp nhận một giá trị số nguyên đại diện cho một nhóm cụ thể và trả về chuỗi được nhóm đã chỉ định nắm bắt trong hoạt động đối sánh.

Do đó, để tìm một thẻ HTML từ một Chuỗi -

  • Tạo một đối tượng Pattern bằng cách chuyển biểu thức chính quy đại diện cho thẻ HTML bắt buộc cho nó dưới dạng tham số cho phương thức compile () của lớp Pattern.

  • Khớp nó với Chuỗi mong muốn bằng cách sử dụng phương thức so khớp () của lớp Mẫu.

  • Xác minh xem có xảy ra không bằng cách sử dụng phương thức find () của lớp Matcher.

  • Trong trường hợp khớp, hãy truy xuất Chuỗi đã khớp bằng cách sử dụng phương thức group () của lớp Matcher.

Ví dụ

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ExtractHtmlTag {
   public static void main(String[] args) {
      String str = "Welcome to <b>Tutorialspoint<b>";
      //Creating a pattern object
      Pattern pattern = Pattern.compile("<b>(\\S+)</b>");
      //Matching the compiled pattern in the String
      Matcher matcher = pattern.matcher(str);
      if (matcher.find()) {
         String result = matcher.group(1);
         System.out.println(result);
      }
   }
}

Đầu ra

Tutorialspoint