Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

นิพจน์ทั่วไป \Q Metacharacter ใน Java


นิพจน์ย่อย/อักขระเมตา "\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 เกิดขึ้น