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

“ ?:” หมายถึงอะไรในนิพจน์ทั่วไปของ Python


ไม่จับกลุ่ม

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

ชุด regex (ค่า)? ตรงกับ Set หรือ SetValue ในกรณีแรก กลุ่มการจับภาพกลุ่มแรก (และเท่านั้น) ยังคงว่างอยู่ ในกรณีที่สอง กลุ่มแรกที่จับกลุ่มจะตรงกับค่า เครื่องหมายคำถามที่ปรากฏต่อท้ายคือตัวระบุปริมาณที่ทำให้โทเค็นก่อนหน้าเป็นตัวเลือก

Set(?:Value) ตรงกับ Setxxxxx นั่นคือ สตริงทั้งหมดที่ขึ้นต้นด้วย Set แต่ไม่ตามด้วย Value ดังกล่าวจะไม่จับกลุ่ม

color=(?:red|green|blue) เป็น regex อื่นที่มีกลุ่มที่ไม่ได้ดักจับ regex นี้ไม่มีตัวระบุ

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