আপনি যদি জাতীয় চরিত্রগুলি এবং ইউনিকোড চরিত্রের ক্লাসগুলির সুনির্দিষ্ট চিকিত্সা সম্পর্কে খুব চিন্তিত হয়ে থাকেন তবে আমি এখন পর্যন্ত কেবলমাত্র সমাধানটি পাই পাইথন regex
গ্রন্থাগারটি । উভয় grep
এবং Perl
(আমার সম্পূর্ণ অবাক!) কাজটি সঠিকভাবে করেনি।
সুতরাং, রেগুলার এক্সপ্রেশন তোমার পরে এই এগুলির মধ্যে একটি: \p{L}
। এটি ইউনিকোড সম্পত্তি শর্টহ্যান্ড সংস্করণ হিসাবে পরিচিত, পুরো সংস্করণটি হ'ল \p{Letter}
বা এমনকি p\{General_Category=Letter}
। Letter
এটি নিজেই একটি যৌগিক শ্রেণি, তবে আমি বিশদে যাব না, এই বিষয়ে আমি যে সর্বোত্তম রেফারেন্স পেয়েছি তা এখানে ।
পাইথন গ্রন্থাগারটি ভাষা অন্তর্নির্মিত নয় (এটি অন্তর্নির্মিত re
লাইব্রেরির বিকল্প )। সুতরাং, আপনার এটি ইনস্টল করা প্রয়োজন, উদাহরণস্বরূপ:
# pip install regex
তারপরে, আপনি এটি এর মতো ব্যবহার করতে পারেন:
import regex
>>> regex.match(ur'\p{L}+', u'۱۲۳۴۵۶۷۸۹۰')
>>> regex.match(ur'\p{L}+', u'абвгд')
<regex.Match object; span=(0, 5), match=u'\u0430\u0431\u0432\u0433\u0434'>
>>> regex.match(ur'\p{L}+', u'123')
>>> regex.match(ur'\p{L}+', u'abcd')
<regex.Match object; span=(0, 4), match=u'abcd'>
>>>
আপনি এই স্ক্রিপ্টটি এমন কোনও জায়গায় রাখতে পারেন যেখানে আপনি এটি অ্যাক্সেস করতে পারবেন:
#!/usr/bin/env python
import regex
import sys
if __name__ == "__main__":
for match in regex.finditer(ur'\p{L}+', sys.argv[1].decode('utf-8')):
print match.string
এবং ইমাক থেকে এটি কল করুন (ধরুন আপনি এই স্ক্রিপ্টটি এতে সংরক্ষণ করেছেন ~/bin
):
(defun unicode-character-p ()
(interactive)
(let* ((current (char-after (point)))
(result (shell-command-to-string
(format "~/bin/is-character.py '%c'" current))))
(message
(if (string= result "") "Character %c isn't a letter"
"Character %c is a letter")
current)))
۱۲۳۴۵۶۷۸۹۰
তবে কিছু সত্য-নেতিবাচক রয়েছে যেমন, আরবী বা হিব্রু আলেফ:א
,ا
।