นิพจน์ย่อย/อักขระเมตา "\Q" หนีอักขระทั้งหมดไม่เกิน "\E" กล่าวคือ คุณสามารถหลีกเลี่ยงอักขระเมตาในนิพจน์ทั่วไปได้โดยวางไว้ระหว่าง \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 เกิดขึ้น