เนื่องจากเราทุกคนคาดเดาฉันก็อาจให้ของฉัน: ฉันคิดเสมอว่ามันเป็นของ Python นั่นอาจฟังดูงี่เง่า - อะไร P สำหรับ Python! - แต่ในการป้องกันของฉันฉันจำหัวข้อนี้ไม่ชัด[เหมืองเน้น]:
Subject: การอ้างสิทธิ์ (? P ... ) ส่วนขยายไวยากรณ์ของ regex
จาก: Guido van Rossum (gui ... @ CNRI.Reston.Va.US)
วันที่: 10 ธันวาคม 1997 3:36:19 น
ฉันมีคำขอที่ผิดปกติสำหรับนักพัฒนา Perl (ผู้ที่พัฒนาภาษา Perl) ฉันหวังว่านี่ (perl5-porter) เป็นรายชื่อที่ถูกต้อง ฉันกำลังอ่านสตริงไพ ธ อนเพราะมันคือต้นกำเนิดของงานส่วนใหญ่ที่ฉันกำลังพูดถึงอยู่ที่นี่
คุณอาจตระหนักถึง Python ฉันเป็นผู้สร้าง Python; ฉันวางแผนที่จะวางจำหน่ายรุ่น "หลัก" รุ่นต่อไปคือ Python 1.5 ภายในสิ้นปีนี้ ฉันหวังว่า Python และ Perl สามารถอยู่ร่วมกันได้ในไม่กี่ปีข้างหน้า การผสมเกสรข้ามสามารถทำได้ดีสำหรับทั้งสองภาษา (ฉันเชื่อว่า Larry ดู Python ได้ดีเมื่อเขาเพิ่มวัตถุลงใน Perl 5; O'Reilly ตีพิมพ์หนังสือเกี่ยวกับทั้งสองภาษา)
ดังที่คุณทราบ Python 1.5 เพิ่มโมดูลนิพจน์ทั่วไปใหม่ที่ตรงกับไวยากรณ์ของ Perl มากขึ้น เราพยายามที่จะใกล้เคียงกับไวยากรณ์ Perl มากที่สุดเท่าที่จะทำได้ภายในไวยากรณ์ของ Python อย่างไรก็ตามไวยากรณ์ regex มีส่วนขยายเฉพาะ Python บางส่วนซึ่งทั้งหมดเริ่มต้นด้วย (? P ขณะนี้มีสองส่วนต่อไปนี้:
(?P<foo>...)
คล้ายกับวงเล็บการจัดกลุ่มปกติ แต่ข้อความที่
จับคู่โดยกลุ่มสามารถเข้าถึงได้หลังจากทำการจับคู่ผ่านชื่อกลุ่มสัญลักษณ์ "foo"
(?P=foo)
จับคู่สตริงเดียวกันกับที่จับคู่โดยกลุ่มชื่อ "foo" เทียบเท่ากับ \ 1, \ 2 ฯลฯ ยกเว้นว่ากลุ่มถูกอ้าง
ถึงโดยใช้ชื่อไม่ใช่ตัวเลข
ฉันหวังว่าส่วนขยายเฉพาะ Python นี้จะไม่ขัดแย้งกับส่วนขยาย Perl ในอนาคตใด ๆ กับไวยากรณ์ Perl regex หากคุณมีแผนที่จะใช้ (? P โปรดแจ้งให้เราทราบโดยเร็วที่สุดเพื่อให้เราสามารถแก้ไขข้อขัดแย้งได้ มิฉะนั้นจะเป็นการดีถ้าหาก (? P ไวยากรณ์อาจถูกสงวนไว้เป็นการถาวรสำหรับส่วนขยายไวยากรณ์เฉพาะของ Python (คือ มีรีจิสตรีของส่วนขยายหรือไม่)
ดังนั้นฉันไม่รู้ว่าตัวเลือกเดิมของ P ได้รับแรงบันดาลใจจากรูปแบบอะไร ตัวยึด? เพนกวิน? - แต่คุณสามารถเข้าใจได้ว่าทำไมฉันถึงเชื่อมโยงกับ Python เสมอ ซึ่งพิจารณาว่า (1) ฉันไม่ชอบการแสดงออกปกติและหลีกเลี่ยงพวกเขาทุกที่ที่ทำได้และ (2) กระทู้นี้เกิดขึ้นเมื่อสิบห้าปีที่แล้วเป็นเรื่องแปลก
P
Placeholder
ย่อมาจาก