นิพจน์ย่อย/เมทาคาแรคเตอร์ “\E ” สิ้นสุดการอ้างอิงที่ขึ้นต้นด้วย \Q กล่าวคือ คุณสามารถหลีกเลี่ยงอักขระเมตาในนิพจน์ทั่วไปได้โดยวางไว้ระหว่าง \Q และ \E ตัวอย่างเช่น นิพจน์ [aeiou] จะจับคู่สตริงที่มีตัวอักษรสระอยู่ในนั้น
ตัวอย่าง
<ก่อน> นำเข้า java.util.Scanner; นำเข้า java.util.regex.Matcher; นำเข้า java.util.regex.Pattern; SampleProgram คลาสสาธารณะ { โมฆะสาธารณะสาธารณะหลัก ( สตริง args [] ) { สตริง regex ="[aeiou] "; สแกนเนอร์ sc =สแกนเนอร์ใหม่ (System.in); System.out.println("ป้อนสตริงอินพุต:"); อินพุตสตริง =sc.nextLine(); //การสร้างวัตถุรูปแบบ Pattern pattern =Pattern.compile(regex); ตัวจับคู่ตัวจับคู่ =pattern.matcher (อินพุต); if(matcher.find()) { System.out.println("การจับคู่เกิดขึ้น"); } อื่น { System.out.println ("ไม่ตรงกัน"); } }}ผลลัพธ์
ป้อนสตริงอินพุต:sampleMatch เกิดขึ้น
แต่ถ้าคุณใช้นิพจน์เดียวกันกับใน \Q และ \E เป็น \Q[aeiou]\E ตรงกับลำดับอักขระ "[aeiou]" ในสตริงที่กำหนด กล่าวโดยย่อ อักขระเมตาสูญเสียความหมายและจะถือเป็นอักขระปกติ
ตัวอย่าง
<ก่อน> นำเข้า java.util.Scanner; นำเข้า java.util.regex.Matcher; นำเข้า java.util.regex.Pattern; SampleProgram คลาสสาธารณะ { โมฆะสาธารณะสาธารณะหลัก ( สตริง args [] ) { สตริง regex ="\\Q [aeiou]\\E"; สแกนเนอร์ sc =สแกนเนอร์ใหม่ (System.in); System.out.println("ป้อนสตริงอินพุต:"); อินพุตสตริง =sc.nextLine(); //การสร้างวัตถุรูปแบบ Pattern pattern =Pattern.compile(regex); ตัวจับคู่ตัวจับคู่ =pattern.matcher (อินพุต); if(matcher.find()) { System.out.println("การจับคู่เกิดขึ้น"); } อื่น { System.out.println ("ไม่ตรงกัน"); } }}ผลลัพธ์ 1
ป้อนสตริงอินพุต:sampleMatch ไม่เกิดขึ้น
ผลลัพธ์2
ป้อนสตริงการป้อนข้อมูล:ตัวอักษร [aeiou] เป็นสระในภาษาอังกฤษ ตัวอักษรMatch เกิดขึ้น