ฉันกำลังจับคู่ตัวระบุ แต่ตอนนี้ฉันมีปัญหา: ตัวระบุของฉันได้รับอนุญาตให้มีอักขระ Unicode ดังนั้นวิธีการทำแบบเก่าจึงไม่เพียงพอ:
t_IDENTIFIER = r"[A-Za-z](\\.|[A-Za-z_0-9])*"
ในตัวแยกวิเคราะห์ ภาษามาร์กอัปของฉัน ฉันจับคู่อักขระ Unicode โดยอนุญาตให้ใช้อักขระทั้งหมด ยกเว้นอักขระที่ฉันใช้อย่างชัดเจน เนื่องจากภาษามาร์กอัปของฉันมีอักขระเพียงสองหรือสามตัวเท่านั้น ฉันจึงต้องหลีกเลี่ยงวิธีนี้
ฉันจะจับคู่อักขระ Unicode ทั้งหมดกับ python regexs และ ply ได้อย่างไร นี่เป็นความคิดที่ดีหรือไม่?
ฉันต้องการให้ผู้คนใช้ตัวระบุเช่น Ω » « ° foo² väli π เป็นตัวระบุ (ชื่อตัวแปรและอื่น ๆ ) ในโปรแกรมของพวกเขา แฮก! ฉันอยากให้ผู้คนสามารถเขียนโปรแกรมในภาษาของตัวเองได้ถ้ามันใช้งานได้จริง! อย่างไรก็ตาม ทุกวันนี้ Unicode ได้รับการรองรับในหลากหลายตำแหน่ง และควรกระจายออกไป
แก้ไข: ดูเหมือนว่าคลาสอักขระ POSIX จะไม่ได้รับการยอมรับจาก python regexes
>>> import re
>>> item = re.compile(r'[[:word:]]')
>>> print item.match('e')
None
แก้ไข: เพื่ออธิบายสิ่งที่ฉันต้องการได้ดีขึ้น ฉันต้องการ regex ซึ่งตรงกับอักขระ Unicode ที่พิมพ์ได้ทั้งหมด แต่ไม่ใช่อักขระ ASCII เลย
แก้ไข: r"\w" ทำสิ่งที่ฉันต้องการเล็กน้อย แต่มันไม่ตรงกับ « » และฉันก็ต้องการ regex ที่ไม่ตรงกับตัวเลขด้วย