কিছু রেজেক্স কমান্ডের বিভিন্ন অক্ষরের সাথে '\' এর বিপরীত ব্যাখ্যা রয়েছে কেন?


10

উদাহরণস্বরূপ, এই আদেশটি ধরুন:

find . -regex ".*\.\(cpp\|h\)"

এটি আপনার ডিরেক্টরিতে সমস্ত .h এবং .cpp ফাইল সন্ধান করবে। পিরিয়ডের চরিত্র '।' নিয়মিত প্রকাশে সাধারণত "কোনও চরিত্র" বোঝায়। এটি কেবল একটি আসল সময়ের সাথে মিলে যাওয়ার জন্য আপনাকে অবশ্যই ব্যাকস্ল্যাশ অক্ষর '\' ব্যবহার করে এড়াতে হবে।

এই ক্ষেত্রে, একটি বিশেষ অর্থ সহ একটি চরিত্র দেওয়া, এটি উপস্থাপন করে এমন প্রকৃত চরিত্র পেতে আপনাকে অবশ্যই এড়াতে হবে।

এখন, যথাক্রমে প্রথম বন্ধনী এবং "বা" অক্ষর হয়ে উঠুন '(', ')', এবং '|'। এগুলির বিশেষ অর্থ রয়েছে যা নিয়মিত অভিব্যক্তি গোষ্ঠীকরণের জন্য ব্যবহৃত হয়। তবে, বিশেষ অর্থটি পেতে, অক্ষরগুলি অবশ্যই ব্যাকস্ল্যাশ ব্যবহার করে পালাতে হবে! ব্যাকস্ল্যাশ ছাড়াই, অক্ষরগুলির প্রকৃত চরিত্রের প্রতিনিধিত্ব করে যার অর্থ এটি প্রতিনিধিত্ব করে।

কেন '।' '(', ')', এবং '|' থেকে আলাদা আচরণ করা হয়েছে?

উত্তর:


12

উত্তরটি সত্যই "ঠিক কারণ"। বিভিন্ন নিয়মিত অভিব্যক্তি সিনট্যাক্সের পুরো গোছা রয়েছে এবং তারা যখন একইরকম উপস্থিতি ভাগ করে এবং সাধারণত বেসিকগুলি একই থাকে তবে সেগুলি বিশদগুলিতে পৃথক হয়।

Orতিহাসিকভাবে, প্রতিটি সরঞ্জামটির নিজস্ব নতুন বাস্তবায়ন ছিল, যা লেখক সবচেয়ে ভাল বলে বিবেচনা করেছিলেন doing পালিয়ে যাওয়া বা না ছাড়াই অক্ষরগুলি বিশেষ করে তোলার মধ্যে একটি ভারসাম্য রয়েছে - অনেকগুলি অক্ষর যা "প্রাকৃতিকভাবে বিশেষ" এবং আপনি কেবলমাত্র তাদের সাথে মিলে যাওয়ার জন্য সমস্ত সময় এড়াতে বাধ্য হন; অথবা, অন্য উপায়ে, () গ্রুপিংয়ের মতো সাধারণ রেগেক্স সিনট্যাক্স ব্যবহার করতে আপনার একদল পলায়ন দরকার। এবং একটি প্রোগ্রাম লেখার প্রত্যেকে সিদ্ধান্ত নিয়েছে যে কীভাবে তাদের প্রোগ্রামের মিল মেলে তার প্রয়োজনের উপর ভিত্তি করে, কীভাবে তারা অনুভব করেছেন যে সঠিক পন্থাটি ছিল এবং চাঁদের ধাপে।

পসিক্স থেকে মানককরণের চেষ্টা রয়েছে যা " বেসিক নিয়মিত অভিব্যক্তি " এবং " বর্ধিত নিয়মিত অভিব্যক্তি " সংজ্ঞা দেয়। আশ্চর্যজনকভাবে, এগুলি একে অপরের থেকে পিছনে কাজ করে \- কখনও কখনও , তবে নিখুঁত ধারাবাহিকতার সাথে নয়।

পার্ল নিয়মিত প্রকাশগুলি দুটি কারণের জন্য আরও একটি ডিফ্যাক্টো স্ট্যান্ডার্ডে পরিণত হয়েছে: প্রথমত, তারা খুব নমনীয় এবং শক্তিশালী এবং দ্বিতীয়ত, "\ সর্বদা একটি অ-অক্ষরীয় চরিত্রের হাতছাড়া হয়" এর মত সম্মেলনে তারা আসলেই খুব বুদ্ধিমান

জিএনইউ ফাইন্ডের একটি -regextypeবিকল্প রয়েছে, যেখানে আপনি ব্যবহৃত নিয়মিত এক্সপ্রেশন সিনট্যাক্স পরিবর্তন করতে পারেন। দুঃখের বিষয়, "পার্ল" কোনও বিকল্প নয়, কমপক্ষে আমার যে সংস্করণটি পাওয়া গেছে তার সংস্করণে। (ডিফল্টটি আশ্চর্যজনকভাবে জিএনইউ থেকে আসে না, "ইমাসস", এবং সেই বাক্য গঠনটি এখানে নথিভুক্ত করা হয় ))

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.