องค์ประกอบการเรียงมักจะอ้างอิงในบริบทของการเรียงลำดับ
ในหลายภาษาการเรียง (การเรียงลำดับเหมือนในพจนานุกรม) ไม่เพียง แต่ทำต่อตัวอักษรเท่านั้น ตัวอย่างเช่นในภาษาเช็กch
ไม่ได้เรียงลำดับcg
และci
ชอบในภาษาอังกฤษ แต่ถือเป็นการเรียงลำดับโดยรวม มันเป็นองค์ประกอบเรียง (เราสามารถได้หมายถึงตัวละครที่นี่ตัวละครที่เป็นส่วนหนึ่งขององค์ประกอบเรียง) ที่ทุกประเภทในระหว่างและh
i
ตอนนี้คุณอาจถามว่าสิ่งที่เกี่ยวข้องกับการแสดงออกปกติ? , ทำไมฉันจะต้องการที่จะอ้างถึงองค์ประกอบเรียงในการแสดงออกวงเล็บ? .
ภายในนิพจน์วงเล็บเหลี่ยมเราใช้คำสั่ง ยกตัวอย่างเช่นใน[c-j]
คุณต้องการให้ตัวละครในระหว่างและc
j
คุณล่ะ คุณต้องการให้เรียงองค์ประกอบที่นั่น [h-i]
ในการแข่งขันภาษาเช็กch
:
$ echo cho | LC_ALL=cs_CZ.UTF-8 grep '^[h-i]o'
cho
ดังนั้นหากคุณสามารถแสดงช่วงขององค์ประกอบการเรียงในนิพจน์วงเล็บปีกกาคุณก็คาดหวังว่าจะสามารถแสดงรายการองค์ประกอบเหล่านั้นทีละรายการได้เช่นกัน [a-cch]
จะตรงกับว่าองค์ประกอบเรียงในระหว่างa
และc
และc
และh
ตัวอักษร ในการมีa-c
และch
อิลิเมนต์การเรียงเราต้องการไวยากรณ์ใหม่:
$ echo cho | LC_ALL=cs_CZ.UTF-8 grep '^[a-c[.ch.]]o'
cho
(คนในระหว่างa
และc
และch
หนึ่ง)
ตอนนี้โลกยังไม่สมบูรณ์แบบและอาจจะไม่เคย ตัวอย่างข้างต้นเป็นในระบบ GNU และทำงานได้ ตัวอย่างของอีกองค์ประกอบเรียงอาจจะe
ด้วยสำเนียงเฉียบพลันรวม UTF-8 ( $'e\u0301'
แสดงผลเหมือน$'\u00e9'
เป็นé
)
éและéเป็นตัวละครเดียวกันยกเว้นตัวหนึ่งจะถูกแทนด้วยตัวละครตัวหนึ่งและอีกตัวที่มีสองตัว
$ echo $'e\u301t\ue9' | grep '^[d-f]t'
จะทำงานได้อย่างถูกต้องในบางระบบ แต่ไม่ใช่ระบบอื่น (ไม่ใช่ GNU เป็นต้น) และมันก็ไม่มีความชัดเจนว่า$'[[.\ue9.]]'
ควรจะตรงเท่านั้น$'\ue9'
หรือทั้งสองอย่างและ$'\ue9'
$'e\u301'
ไม่พูดถึงสคริปต์ที่ไม่ใช่ตัวอักษรหรือสคริปต์ที่มีคำสั่งเรียงลำดับภูมิภาคการเรียงลำดับสิ่งต่าง ๆ เช่น ffi ( ffi
ในอักขระหนึ่งตัว) ซึ่งกลายเป็นเรื่องยุ่งยากในการจัดการกับ API อย่างง่าย
ch
คือตัวละครสองตัวที่แตกต่างกัน มันเป็นเพียงหนึ่งเพื่อวัตถุประสงค์ในการจัดเรียง คุณแน่ใจว่า "digraph" เป็นคำที่เหมาะสมหรือไม่