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

นิพจน์ทั่วไป Java ที่ไม่ใช่การจับกลุ่ม:


การใช้การจับกลุ่ม คุณสามารถจัดการอักขระหลายตัวเป็นหน่วยเดียวได้ คุณเพียงแค่ต้องวางอักขระเพื่อจัดกลุ่มไว้ในชุดวงเล็บ ตัวอย่างเช่น −

(.*)(\\d+)(.*)

หากคุณกำลังพยายามจับคู่หลายกลุ่ม ผลการแข่งขันของแต่ละกลุ่มจะถูกบันทึกไว้ คุณสามารถรับผลลัพธ์จากกลุ่มโดยส่งหมายเลขกลุ่มที่เกี่ยวข้องไปยังเมธอด group() 1,2, 3 เป็นต้น (จากขวาไปซ้าย) กลุ่ม 0 หมายถึงการแข่งขันทั้งหมด

ตัวอย่าง

<ก่อนหน้า> นำเข้า java.util.Scanner นำเข้า java.util.regex.Matcher นำเข้า java.util.regex.Pattern คลาสสาธารณะ CapturingGroups { โมฆะสาธารณะหลัก (สตริง args [] ) { System.out.println (" ใส่ข้อความ"); สแกนเนอร์ sc =สแกนเนอร์ใหม่ (System.in); อินพุตสตริง =sc.nextLine(); สตริง regex ="(.*)(\\d+)(.*)"; //สร้างวัตถุรูปแบบ Pattern pattern =Pattern.compile(regex); // ตอนนี้สร้างวัตถุที่จับคู่ ตัวจับคู่ตัวจับคู่ =pattern.matcher (อินพุต); if (matcher.find ( )) { System.out.println ("ค่าที่พบ:" + matcher.group (0) ); System.out.println("ค่าที่พบ:" + matcher.group(1) ); System.out.println("ค่าที่พบ:" + matcher.group(2) ); System.out.println("ค่าที่พบ:" + matcher.group(3) ); } อื่น { System.out.println ("ไม่ตรงกัน"); } }}

ผลลัพธ์

ป้อนข้อมูลตัวอย่างข้อความด้วยค่า 1234 (หลัก) ที่ค่ากลาง Found:ข้อมูลตัวอย่างที่มี 1234 (หลัก) ค่าตรงกลาง:ข้อมูลตัวอย่างที่มีค่า 123Found:4ค่าที่พบ:(ตัวเลข) ตรงกลาง

ไม่จับกลุ่ม

กลุ่มที่ไม่จับภาพมีฟังก์ชันเดียวกันกับกลุ่มที่ดักจับ แต่จะไม่เก็บผลลัพธ์

ตัวอย่างเช่น หากคุณต้องการจับคู่ URL หรือหมายเลขโทรศัพท์จากข้อความโดยใช้กลุ่ม เนื่องจากส่วนเริ่มต้นของสตริงย่อยที่ต้องการเหมือนกัน คุณไม่จำเป็นต้องบันทึกผลลัพธ์ของกลุ่มบางกลุ่มในกรณีดังกล่าว คุณสามารถใช้กลุ่มที่ไม่ได้จับ กลุ่มที่ไม่จับภาพเริ่มต้นด้วย (?:และลงท้ายด้วย )

ตัวอย่าง

<ก่อนหน้า> นำเข้า java.util.Scanner นำเข้า java.util.regex.Matcher นำเข้า java.util.regex.Pattern คลาสสาธารณะ CapturingGroups { โมฆะสาธารณะหลัก (สตริง args [] ) { System.out.println (" ใส่ข้อความ"); สแกนเนอร์ sc =สแกนเนอร์ใหม่ (System.in); อินพุตสตริง =sc.nextLine(); สตริง regex ="(.*)(?:\\d+)(.*)"; //สร้างวัตถุรูปแบบ Pattern pattern =Pattern.compile(regex); // ตอนนี้สร้างวัตถุที่จับคู่ ตัวจับคู่ตัวจับคู่ =pattern.matcher (อินพุต); if (matcher.find ( )) { System.out.println ("ค่าที่พบ:" + matcher.group (0) ); System.out.println("ค่าที่พบ:" + matcher.group(1) ); System.out.println("ค่าที่พบ:" + matcher.group(2) ); } อื่น { System.out.println ("ไม่ตรงกัน"); } }}

ผลลัพธ์

ป้อนข้อมูลตัวอย่างข้อความที่มี 1234 (หลัก) อยู่ในค่ากลางFound:ข้อมูลตัวอย่างที่มี 1234 (หลัก) อยู่ในค่ากลางFound:ข้อมูลตัวอย่างที่มีค่า 123Found:(หลัก) อยู่ตรงกลาง

หมายเหตุ: กลุ่มที่ไม่จับจะไม่ถูกนับรวมในกลุ่ม