คลาส java.util.regex.Matcher แสดงถึงเอ็นจิ้นที่ดำเนินการจับคู่ต่างๆ ไม่มีตัวสร้างสำหรับคลาสนี้ คุณสามารถสร้าง/รับวัตถุของคลาสนี้โดยใช้เมธอดmatch() ของคลาส java.util.regex.Pattern
ในนิพจน์ทั่วไป โครงสร้าง lookbehind และ lookahead ถูกใช้เพื่อจับคู่รูปแบบเฉพาะที่อยู่ก่อนหน้าหรือประสบความสำเร็จในรูปแบบอื่น ตัวอย่างเช่น หากคุณต้องการยอมรับสตริงที่ยอมรับอักขระ 5 ถึง 12 ตัว นิพจน์ทั่วไปจะเป็น −
"\\A(?=\\w{6,10}\\z)";
โดยค่าเริ่มต้น ขอบเขตของขอบเขตของตัวจับคู่จะไม่โปร่งใสต่อโครงสร้าง lookahead, lookbehind และ boundary matching เช่น โครงสร้างเหล่านี้ไม่สามารถจับคู่เนื้อหาของข้อความที่ป้อนเกินขอบเขตของภูมิภาค -
hasTransparentBounds() เมธอดของเมธอดของคลาสนี้จะตรวจสอบว่าตัวจับคู่ปัจจุบันใช้ขอบเขตโปร่งใสหรือไม่ หากเป็นเช่นนั้น คืนค่าเป็น true หรือคืนค่าเท็จ
ตัวอย่างที่ 1
<ก่อนหน้า> นำเข้า java.util.Scanner นำเข้า java.util.regex.Matcher นำเข้า java.util.regex.Pattern คลาสสาธารณะ HasTransparentBounds { โมฆะสาธารณะหลัก (สตริง [] args) {// นิพจน์ทั่วไปที่จะยอมรับ 6 ถึง 10 ตัวอักษร String regex ="\\A(?=\\w{6,10}\\z)"; System.out.println("ป้อน 5 ถึง 12 ตัวอักษร:"); อินพุตสตริง =สแกนเนอร์ใหม่ (System.in). ถัดไป (); //การสร้างวัตถุรูปแบบ Pattern pattern =Pattern.compile(regex); //การสร้าง Matcher วัตถุ Matcher matcher =pattern.matcher (อินพุต); //การตั้งค่าขอบเขตเป็นสตริงอินพุต matcher.region(0, 4); if(matcher.find()) { System.out.println ("พบรายการที่ตรงกัน"); } อื่น { System.out.println ("ไม่พบรายการที่ตรงกัน"); } บูลีนบูล =matcher.hasTransparentBounds(); // เปลี่ยนเป็นขอบเขตโปร่งใส if (bool) { System.out.println ("ตัวจับคู่ปัจจุบันใช้ขอบเขตโปร่งใส"); } อื่น { System.out.println ("ผู้ใช้ที่จับคู่ปัจจุบันไม่โปร่งใสที่ถูกผูกไว้"); } }}ผลลัพธ์
ป้อน 5 ถึง 12 ตัวอักษร:sampletextMatch not foundCurrent matcher user non-transparent bound
ตัวอย่างที่ 2
<ก่อนหน้า> นำเข้า java.util.Scanner นำเข้า java.util.regex.Matcher นำเข้า java.util.regex.Pattern คลาสสาธารณะ HasTransparentBounds { โมฆะสาธารณะหลัก (สตริง [] args) {// นิพจน์ทั่วไปที่จะยอมรับ 6 ถึง 10 ตัวอักษร String regex ="\\A(?=\\w{6,10}\\z)"; System.out.println("ป้อน 5 ถึง 12 ตัวอักษร:"); อินพุตสตริง =สแกนเนอร์ใหม่ (System.in). ถัดไป (); //การสร้างวัตถุรูปแบบ Pattern pattern =Pattern.compile(regex); //การสร้าง Matcher วัตถุ Matcher matcher =pattern.matcher (อินพุต); //การตั้งค่าขอบเขตเป็นสตริงอินพุต matcher.region(0, 4); matcher.useTransparentBounds(จริง); if(matcher.find()) { System.out.println ("พบรายการที่ตรงกัน"); } อื่น { System.out.println ("ไม่พบรายการที่ตรงกัน"); } บูลีนบูล =matcher.hasTransparentBounds(); // เปลี่ยนเป็นขอบเขตโปร่งใส if (bool) { System.out.println ("ตัวจับคู่ปัจจุบันใช้ขอบเขตโปร่งใส"); } อื่น { System.out.println ("ผู้ใช้ที่จับคู่ปัจจุบันไม่โปร่งใสที่ถูกผูกไว้"); } }}ผลลัพธ์
ป้อนอักขระ 5 ถึง 12 ตัว:sampletextMatch foundCurrent matcher ใช้ขอบเขตโปร่งใส