ฉันมีรายการสตริง 123-...456
บางคนก็มีของแบบฟอร์ม ส่วนตัวแปร "... " อาจเป็น:
- สตริง "apple" ตามด้วยยัติภังค์เช่น
123-apple-456
- สตริง "Banana" ตามด้วยยัติภังค์เช่น
123-banana-456
- สตริงว่างเช่น
123-456
(โปรดสังเกตว่ามีเครื่องหมายขีดคั่นอยู่หนึ่งอัน)
คำอื่นที่ไม่ใช่ "apple" หรือ "Banana" นั้นไม่ถูกต้อง
สำหรับทั้งสามกรณีนี้ฉันต้องการจับคู่ "apple", "Banana" และ "" ตามลำดับ โปรดทราบว่าฉันไม่ต้องการจับภาพยัติภังค์ แต่ฉันต้องการจับคู่เสมอ หากสตริงนั้นไม่ใช่แบบฟอร์ม123-...456
ตามที่อธิบายไว้ข้างต้นแสดงว่าไม่มีการจับคู่เลย
ฉันจะเขียนนิพจน์ทั่วไปเพื่อทำสิ่งนี้ได้อย่างไร สมมติว่าฉันมีรสชาติที่อนุญาตให้กลุ่ม lookahead, lookbehind, lookaround และกลุ่มที่ไม่ถูกจับ
ข้อสังเกตสำคัญที่นี่คือเมื่อคุณมี "แอปเปิล" หรือ "กล้วย" คุณต้องมียัติภังค์ต่อท้าย แต่คุณไม่ต้องการจับคู่ และเมื่อคุณจับคู่สตริงว่างคุณต้องไม่มีเครื่องหมายขีดคั่นต่อท้าย ฉันคิดว่า regex ที่ห่อหุ้มคำยืนยันนี้จะเป็นสิ่งที่ถูกต้อง