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

ตัวระบุปริมาณไม่เต็มใจ Java Regular expressions


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

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

หากคุณใส่เครื่องหมาย "?" หลังจากปริมาณที่โลภจะกลายเป็นปริมาณที่ไม่เต็มใจหรือไม่โลภ ต่อไปนี้คือรายการของปริมาณที่ไม่เต็มใจ -

ตัวระบุ คำอธิบาย
re*? ตรงกับศูนย์หรือมากกว่าที่เกิดขึ้น
รี?? จับคู่ศูนย์หรือ 1 รายการ
รี+? จับคู่อย่างน้อยหนึ่งรายการ
re{n}? ตรงกับ n ครั้งพอดี
re{n, }? จับคู่อย่างน้อย n ครั้ง
re{n, m}? จับคู่อย่างน้อย n และมากที่สุด m ครั้ง

ตัวอย่าง

<ก่อน> นำเข้า java.util.Scanner; นำเข้า java.util.regex.Matcher; นำเข้า java.util.regex.Pattern; การทดสอบคลาสสาธารณะ { โมฆะสาธารณะหลัก (สตริง [] args) { Scanner sc =สแกนเนอร์ใหม่ (ระบบ .ใน); System.out.println("ป้อนข้อความ:"); อินพุตสตริง =sc.nextLine(); สตริง regex ="[0-9]+?"; //การสร้างวัตถุรูปแบบ Pattern pattern =Pattern.compile(regex); //จับคู่รูปแบบที่คอมไพล์แล้วใน String Matcher matcher =pattern.matcher(input); while (matcher.find()) { System.out.print("Pattern found from " + matcher.start()+ " ถึง " + (matcher.end()-1)+"::"); System.out.print(matcher.group()); System.out.println(); } }}

ผลลัพธ์

ป้อนข้อความที่ป้อน:12345678พบรูปแบบตั้งแต่ 0 ถึง 0::1รูปแบบ พบตั้งแต่ 1 ถึง 1::2 พบรูปแบบตั้งแต่ 2 ถึง 2::3 พบรูปแบบตั้งแต่ 3 ถึง 3::4 พบรูปแบบตั้งแต่ 4 ถึง 4::5 พบรูปแบบจาก 5 ถึง 5::6พบรูปแบบตั้งแต่ 6 ถึง 6::7รูปแบบที่พบตั้งแต่ 7 ถึง 7::8