একটি রেজেক্সে [[.চ .চ।]] এর অর্থ কী?


11

বিকল্প শিরোনাম: একটি পসিক্স-কমপ্লায়েন্ট রেজেক্সে "কোলাটিং সিকোয়েন্স" বা "কোলাটিং এলিমেন্ট" কী?

আমি পজিক্স স্পক্সের বিভাগ 9.3.5-তে সঠিক প্রযুক্তিগত সংজ্ঞাটি পেয়েছি, তালিকার আইটেম # 4 হিসাবে, তবে এটি আমার কাছে সত্যই পরিষ্কার নয়।

উদাহরণস্বরূপ এবং ব্যাখ্যার জন্য আমি ওয়েবে চারপাশে গুগল করেছিলাম এবং খালি হাতে পুরোপুরি উঠে এসেছি না , তবে অবশ্যই আলোকিত হয়নি

আমি একমাত্র জিনিসটি সাজিয়েছি যে নির্দিষ্ট পরিস্থিতিতে আপনি আপনার রেজেক্সকে একাধিক চরিত্রের সাথে আচরণ করতে পারেন যেমন তারা দৈর্ঘ্যের তুলনা এবং "দীর্ঘতম ম্যাচ" কী তা নির্ধারণের উদ্দেশ্যে একক চরিত্র (যেহেতু রেজেক্সগুলি লোভী এবং দীর্ঘতম সম্ভাব্য ম্যাচটি ফিরিয়ে দিন)।

সব কি, যদিও? আমি এর ব্যবহার দেখে আমার সমস্যা হচ্ছে, তবে আমার ধারণাটি অসম্পূর্ণ রয়েছে বলে আমার সন্দেহ। একটি রেইজেক্সের জন্য আসলে "কোলাটিং" কী? এবং কীভাবে [[.ch.]], পসিক্স স্পক্সের উদাহরণটি এর সাথে সম্পর্কিত?

উত্তর:


7

কোলেশন উপাদানগুলি সাধারণত বাছাইয়ের প্রসঙ্গে উল্লেখ করা হয়।

অনেক ভাষায়, কোলিশেশন (অভিধানের মতো বাছাই করা) কেবল প্রতি-চরিত্রে করা হয় না। উদাহরণস্বরূপ, চেক ইন, chমধ্যে নয় সাজানোর করে cgএবং ciএটা ইংরেজিতে, কিন্তু বাছাইয়ের জন্য একটি সম্পূর্ণ হিসাবে বিবেচনা করা হয় না। এটি একটি কোলটিং উপাদান (আমরা এখানে কোনও চরিত্রকে উল্লেখ করতে পারি না, চরিত্র হ'ল উপাদানগুলির একটি উপসেট) যা এর মধ্যে hএবং এর মধ্যে সাজানো থাকে i

এখন আপনি জিজ্ঞাসা করতে পারেন, নিয়মিত প্রকাশের সাথে এর কী করার আছে? , আমি কেন বন্ধনী অভিব্যক্তিতে একটি কোঁকড়া উপাদান উল্লেখ করতে চাই?

ভাল, বন্ধনী এক্সপ্রেশন এর ভিতরে, কেউ অর্ডার ব্যবহার করে। উদাহরণস্বরূপ [c-j], আপনি মধ্যে এবং মধ্যে অক্ষর চান । আচ্ছা, তাই না? আপনি বরং সেখানে উপাদানগুলি কোল্ট করতে চান। একটি চেক লোকাল ম্যাচে :cj[h-i]ch

$ echo cho | LC_ALL=cs_CZ.UTF-8 grep '^[h-i]o'
cho

সুতরাং, আপনি যদি বন্ধনীর মত প্রকাশের ক্ষেত্রে অনেকগুলি সহযোগী উপাদানগুলির তালিকা করতে সক্ষম হন তবে আপনি পৃথকভাবে সেগুলিও তালিকাভুক্ত করতে সক্ষম হবেন বলে আশা করি। এবং এবং এবং অক্ষরগুলির [a-cch]মধ্যে মিলনকারী উপাদানগুলি মিলবে । কোলাটিং উপাদান থাকতে এবং আমাদের একটি নতুন সিনট্যাক্স প্রয়োজন:accha-cch

$ echo cho | LC_ALL=cs_CZ.UTF-8 grep '^[a-c[.ch.]]o'
cho

(মাঝে বেশী aএবং cএবং chএক)।

এখন, পৃথিবী এখনও নিখুঁত নয় এবং সম্ভবত কখনও হবে না। উপরের উদাহরণটি একটি জিএনইউ সিস্টেমে ছিল এবং কাজ করেছিল। একটি কোলাইটিং উপাদানটির আরেকটি উদাহরণ eইউটিএফ -8 এ সংমিশ্রণ তীব্র উচ্চারণের সাথে হতে পারে ( যেমনটি $'e\u0301'উপস্থাপন $'\u00e9'করা হয়েছে é)।

one এবং é হ'ল এক চরিত্র ব্যতীত যে একটিতে একটি চরিত্রের সাথে এবং অন্যটি দুটি দিয়ে।

$ echo $'e\u301t\ue9' | grep '^[d-f]t'

কিছু সিস্টেমে সঠিকভাবে কাজ করবে তবে অন্যগুলি নয় (উদাহরণস্বরূপ জিএনইউ নয়)। এবং এটা কিনা স্পষ্ট নয় $'[[.\ue9.]]'শুধুমাত্র সুসংগত হওয়া আবশ্যক $'\ue9'অথবা উভয় $'\ue9'এবং $'e\u301'

বর্ণমালাবিহীন স্ক্রিপ্টগুলি বা বিভিন্ন, আঞ্চলিক, বাছাই অর্ডার সহ স্ক্রিপ্টগুলি উল্লেখ না করা, ffi ( ffiএকটি চরিত্রের মধ্যে) এর মতো জিনিস যা এ জাতীয় সহজ এপিআই দিয়ে হ্যান্ডেল করার জন্য জটিল হয়ে ওঠে।


1

যখন অ-ইংরাজী (অ-অ্যাসিআই) অক্ষর ব্যবহার হয় তখন এটি দরকারী use আপনি যে উদাহরণটির chকথা উল্লেখ করেছেন তা হ'ল ডিজিট্রাফ , অর্থাত কিছু ভাষার বর্ণমালায় একটি অক্ষর থাকে যা ইংরেজি বর্ণমালায় দুটি বর্ণ দ্বারা প্রতিনিধিত্ব করা যায় /।

যখন আপনি ব্যবহার [.ch.]কোন RegExp, আপনি মূলত বলতে: "আমি digraph সঙ্গে একটি অ ইংরেজি ইনপুট ক্রম আশা chআমি আমার regexp একক চরিত্র মেলে চাই। chআমার প্রোগ্রামিং ভাষা / Regex ইঞ্জিন / কীবোর্ড আমাকে এই digraph এর লিখতে অনুমতি দেয় না। সাইন ইন করুন, তাই আমি টাইপ [.ch.]করি I আমি এর cপরে কোনও মানে না hPlease অনুগ্রহ করে কেবলমাত্র একটি একা চরিত্র হিসাবে ডিজিট্রাফের উপস্থিতিগুলি আবিষ্কার করুন। "

[[.ch.]]এর অর্থ হ'ল ডিগ্রাফ হ'ল অক্ষরের একটি সেট। এই ক্ষেত্রে কেবলমাত্র একটি চরিত্র character স্রেফ স্ট্যান্ডার্ড রেজপ্লেস স্বরলিপি।


স্টিফেনের উত্তর থেকে দেখে মনে ch হচ্ছে আসলে দুটি ভিন্ন চরিত্র; এটি কেবল বাছাইয়ের উদ্দেশ্যে বিবেচনা করা হয়। আপনি কি "ডিজিট্রাফ" একটি প্রযোজ্য শব্দ?
ওয়াইল্ডকার্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.