คลาส Pattern ของแพ็กเกจ java.regex เป็นการแสดงรูปแบบที่คอมไพล์แล้วของนิพจน์ปกติ
เมธอด compile() ของคลาสนี้รับค่าสตริงที่แทนนิพจน์ปกติและส่งคืนออบเจ็กต์ Pattern
ตัวอย่าง
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CompileExample {
public static void main( String args[] ) {
// อ่านค่าสตริง
Scanner sc = new Scanner(System.in);
System.out.println("Enter input string");
String input = sc.nextLine();
// นิพจน์ปกติเพื่อค้นหาตัวเลข
String regex = "(\\d)";
// คอมไพล์นิพจน์ปกติ
Pattern pattern = Pattern.compile(regex);
// แสดงนิพจน์ปกติที่คอมไพล์แล้ว
System.out.println("Compiled regular expression: " + pattern.toString());
// ดึงออบเจ็กต์ matcher
Matcher matcher = pattern.matcher(input);
// ตรวจสอบการจับคู่
if(matcher.find()) {
System.out.println("Given String contains digits");
} else {
System.out.println("Given String does not contain digits");
}
}
}ผลลัพธ์
Enter input string hello my id is 1120KKA Compiled regular expression: (\d) Given String contains digits
รูปแบบอื่นของเมธอดนี้รับค่าจำนวนเต็มที่แทนแฟล็ก (flags) โดยแต่ละแฟล็กระบุเงื่อนไขเพิ่มเติม เช่น CASE_INSENSITIVE ที่ละเลยตัวพิมพ์เล็ก/ใหญ่ขณะคอมไพล์นิพจน์ปกติ
ตัวอย่างพร้อมแฟล็ก
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CompileExample {
public static void main( String args[] ) {
// คอมไพล์นิพจน์ปกติพร้อมแฟล็ก
Pattern pattern = Pattern.compile("[t]", Pattern.CASE_INSENSITIVE);
// ดึงออบเจ็กต์ matcher
Matcher matcher = pattern.matcher("Tutorialspoint");
int count = 0;
while(matcher.find()) {
count++;
}
System.out.println("Number of matches: " + count);
}
}ผลลัพธ์
Number of matches: 3