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

Matcher useTransparentBounds() วิธีการใน Java พร้อม Examples


คลาส java.util.regex.Matcher แสดงถึงเอ็นจิ้นที่ดำเนินการจับคู่ต่างๆ ไม่มีตัวสร้างสำหรับคลาสนี้ คุณสามารถสร้าง/รับวัตถุของคลาสนี้โดยใช้เมธอดmatch() ของคลาส java.util.regex.Pattern

ในนิพจน์ทั่วไป โครงสร้าง lookbehind และ lookahead ถูกใช้เพื่อจับคู่รูปแบบเฉพาะที่อยู่ก่อนหน้าหรือประสบความสำเร็จในรูปแบบอื่น ตัวอย่างเช่น หากคุณต้องการยอมรับสตริงที่ยอมรับอักขระ 5 ถึง 12 ตัว นิพจน์ทั่วไปจะเป็น −

"\\A(?=\\w{6,10}\\z)";

โดยค่าเริ่มต้น ขอบเขตของขอบเขตของตัวจับคู่จะไม่โปร่งใสต่อโครงสร้างที่มองไปข้างหน้า มองไปข้างหลัง และการจับคู่ขอบเขต กล่าวคือ โครงสร้างเหล่านี้ไม่สามารถจับคู่เนื้อหาของข้อความที่ป้อนเกินขอบเขตของภูมิภาค -

ตัวอย่างที่ 1

นำเข้า java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern;คลาสสาธารณะ useTransparentBoundsExample { public static void main (String [] 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 ("ไม่พบรายการที่ตรงกัน"); } }}

ผลลัพธ์

ป้อนอักขระ 5 ถึง 12 ตัว:sampleTextMatch ไม่พบ

useTransparentBounds() เมธอดของเมธอดคลาสนี้ยอมรับค่าบูลีน และหากคุณส่งค่าจริงไปยังเมธอดนี้ ตัวจับคู่ปัจจุบันจะใช้ขอบเขตโปร่งใส และหากคุณส่งค่าเท็จไปยังเมธอดนี้ จะใช้ขอบเขตที่ไม่โปร่งใส

ตัวอย่างที่ 2

<ก่อน> นำเข้า java.util.Scanner; นำเข้า java.util.regex.Matcher; นำเข้า java.util.regex.Pattern; ตัวอย่างคลาสสาธารณะ { โมฆะสาธารณะหลัก (สตริง [] 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 ("ไม่พบรายการที่ตรงกัน"); } }}

ผลลัพธ์

ป้อนอักขระ 5 ถึง 12 ตัว:sampletextMatch พบ