নিয়মিত প্রকাশের সংজ্ঞা কী?


10

এই প্রশ্নের উত্তর সম্পর্কে আমার মন্তব্যে নিয়মিত প্রকাশ কী তা নিয়ে আমি সম্প্রতি ঘোতির সাথে বন্ধুত্বপূর্ণ যুক্তিতে জড়িয়ে পড়ি । আমি দাবি করেছি যে নিম্নলিখিতটি একটি নিয়মিত প্রকাশ:

`[Rr]eading[Tt]est[Dd]ata`

ঘোটি এতে দ্বিধাদ্বন্ধ প্রকাশ করেছেন, এটির পরিবর্তে এটি একটি ফাইল গ্লোব। উল্লিখিত glob উইকিপিডিয়া দাবি যে (জোর খনি) পৃষ্ঠার:

গ্লাবগুলি ক্লিন স্টারের জন্য সিনট্যাক্স অন্তর্ভুক্ত করে না যা এক্সপ্রেশনটির পূর্ববর্তী অংশের একাধিক পুনরাবৃত্তির অনুমতি দেয়; সুতরাং এগুলিকে নিয়মিত প্রকাশ হিসাবে বিবেচনা করা হয় না, যা কোনও নির্দিষ্ট সীমাবদ্ধ বর্ণমালার তুলনায় নিয়মিত ভাষার বৃহত্তর সেট বর্ণনা করতে পারে।

যাইহোক, এই দাবির জন্য কোনও উদ্ধৃতি নেই যা ইঙ্গিত করে যে এটি কেবল নির্দিষ্ট উইকিপিডিয়া সম্পাদকের মতামত।

দ্য সিঙ্গল ইউএনএক্স ® স্পেসিফিকেশন, সংস্করণ 2-এ উল্লেখ করা হয়েছে যে একটি বেসিক নিয়মিত এক্সপ্রেশন (বিআরই) এমনকি একটি একক চরিত্র হতে পারে:

একটি সাধারণ চরিত্র একটি বিআরই যা নিজের সাথে মেলে: সমর্থিত অক্ষর সেটটিতে যে কোনও অক্ষর, বিআরআই বিশেষ অক্ষরগুলিতে তালিকাভুক্ত বিআরআই বিশেষ অক্ষর ব্যতীত।

সুতরাং, * নিক্স বিশ্বে নিয়মিত প্রকাশের সংজ্ঞা কী এবং সেই সংজ্ঞা ফাইল গ্লোবগুলি বাদ দেয়?


6
তাত্ত্বিক সিএসে, একটি নিয়মিত প্রকাশ হ'ল নিয়মিত ভাষার বিবরণ, যা সীমাবদ্ধ অটোমেটনের দ্বারা স্বীকৃত হতে পারে is ইউনিক্স বিশ্বে এটি আরও জটিল এবং এর একক সংজ্ঞা নেই। সেখানে POSIX বৈশিষ্ট 2 Regex উপভাষা হল: বাড়ানো এবং মৌলিক, যা টুলস দ্বারা ব্যবহৃত হয় পছন্দ grep, sedএবং awk। ভিম তার নিজস্ব বিভিন্নতা ব্যবহার করে, যেমন পার্লের মতো।
jw013

সুতরাং, যে সংজ্ঞা দ্বারা, একটি ফাইল উল্লিখিত glob হয় একটি BRE ঠিক আছে?
টেরডন

2
নাহ, একটি ফাইল গ্লোব একটি বিআরই নয় - আপনার কী মনে হয় এটি এটি? আপনি যদি BRE এর POSIX বিবরণ এবং গ্লোব্বিংয়ের পসিক্স বিবরণ পড়েন তবে আপনি লক্ষ্য করবেন যে সেগুলি এক নয়। উদাহরণস্বরূপ, *বিআরই এবং গ্লোবগুলিতে দুটি পৃথক অর্থ রয়েছে। দ্রষ্টব্য: আমি মনে করি না যে গ্লোব শব্দটি পসিক্স স্পেক-এ কোথাও ব্যবহৃত হয়েছে - একে পরিবর্তে প্যাটার্ন ম্যাচিং বলা হয় এবং শেল ভাষার অধ্যায়টিতে বর্ণিত হয়।
jw013

উত্তর:


10

হিসাবে lk- বললেন, বিকল্প একটি উল্লিখিত glob, না একটি রেগুলার এক্সপ্রেশন হিসাবে যুক্তি বিবেচনা করে।-namefind

স্ট্রিংকে গ্লোব বা রেজেক্স হিসাবে ব্যাখ্যা করা হোক বা কেবল একটি সরল স্ট্রিং কী ব্যাখ্যা করতে ব্যবহৃত হচ্ছে তার উপর নির্ভর করে। এটা প্রসঙ্গে একটি বিষয়। আপনার উদাহরণের স্ট্রিংটি [Rr]eading[Tt]est[Dd]ataবিভিন্ন উপায়ে মূল্যায়ন করা যেতে পারে, তবে এটি কীভাবে আপনি এটি ব্যবহার করছেন তার উপর নির্ভর করে। এটি গ্লোব হিসাবে ব্যবহার করুন, এটি একটি গ্লোব। এটি একটি রেজেক্স হিসাবে ব্যবহার করুন, এটি একটি রেজেক্স। এটি যেখানে উদ্ভূত হয়েছিল সেই প্রশ্নের ক্ষেত্রে ওপি স্ট্রিংটিকে রেজেক্স হিসাবে বর্ণনা করেছে। অতএব আমরা ধরে নিতে পারি যে তিনি এটি একটি রেজেক্স হিসাবে ব্যাখ্যা করার পরিকল্পনা করেছিলেন।

একটি একক অক্ষরও পুরোপুরি একটি রেজেক্স হতে পারে। এটি স্ট্রিংও হতে পারে এবং এটি গ্লোবও হতে পারে। আপনার পছন্দ হলে এটি বাইট বা টিনিনেন্ট হিসাবে ব্যাখ্যা করা যেতে পারে। এটি সব প্রসঙ্গে নির্ভর করে।

বিভিন্ন ফর্মের নিয়মিত প্রকাশের জন্য বিভিন্ন ধরণের স্পেসিফিকেশন রয়েছে। BRE এবং ERE ভাল ডকুমেন্টেড হয়। পিসিআরই কার্যকারিতার স্ক্যাড যুক্ত করে। অনেক রিজেক্স দোভাষী অনুবাদক প্রয়োগ করবেন, উদাহরণস্বরূপ, "সমস্ত পূর্ব এবং কিছু পিসিআরই"। অথবা তারা কিছু পূর্বে মাইনাস করতে হবে। আপনি যদি আনুষ্ঠানিক নির্দিষ্টকরণের দ্বারা যান তবে অনেকগুলি সরঞ্জাম রিজেক্স-সমর্থন দাবি করে যা ভুল বা অসম্পূর্ণ হয়ে যায়। বিশদ জানার ফলে আপনি আপনার রেজেক্সের মূল্যায়ন করছেন যে কোনও সরঞ্জামের মধ্যে উপলব্ধ কার্যকারিতা সংগ্রহের জন্য আপনার সমাধানগুলিকে অভিযোজিত করতে দেয়।

সুতরাং ... আপনি যদি গ্লোবগুলিকে "বাদ দেয়" এমন সংজ্ঞা খুঁজছেন, আপনি এটিকে ভুল দৃষ্টিকোণ থেকে দেখছেন। এটি কীভাবে আপনি এটি ব্যবহার করে তা নির্ধারিত হয় ।


7

[Rr]eading[Tt]est[Dd]ataএকটি গ্লোব এবং একটি নিয়মিত প্রকাশ উভয় হিসাবে বৈধ বলে মনে হয় এবং আমি বিশ্বাস করি যে উভয় ব্যাখ্যায় একই "অর্থ" রয়েছে। যাইহোক, -nameবিকল্পটি findআর্গুমেন্টটিকে নিয়মিত প্রকাশ হিসাবে নয়, গ্লোব হিসাবে বিবেচনা করবে।

আপনি যদি কোনও যুক্তি সরবরাহ করেন তবে এই পার্থক্যটি বিবেচনা করবে foo*, যা বৈধ গ্লোব এবং একটি বৈধ নিয়মিত প্রকাশ উভয়ই, তবে ব্যাখ্যার উপর নির্ভর করে এর আলাদা অর্থ রয়েছে:

যদি একটি উল্লিখিত glob প্যাটার্ন হিসেবে ব্যাখ্যা, এই ম্যাচ হবে foo, foobar, foo123, ইত্যাদি

যদি একটি রেগুলার এক্সপ্রেশন হিসেবে ব্যাখ্যা, এই ম্যাচ হবে fo, foo, foooooo, ইত্যাদি


ধন্যবাদ, আমি একটি গ্লোব প্যাটার্ন এবং একটি রেজেক্সের মধ্যে পার্থক্য দেখতে পাচ্ছি। যদিও একটি রেইজেক্সের আনুষ্ঠানিক সংজ্ঞা?
টেরডন

1
আমি জানি না যে এই শব্দটি সাধারণত ব্যবহৃত হয় তাই "নিয়মিত প্রকাশের" জন্য একটি একক সংজ্ঞা আছে কিনা। POSIX নিয়মিত এক্সপ্রেশন বা পার্ল নিয়মিত এক্সপ্রেশনগুলির মতো বিভিন্ন সিনট্যাক্সের স্পেসিফিকেশন রয়েছে, যার মধ্যে অন্যান্য "বৈশিষ্ট্য" যেমন ব্যাকরেফারেন্স বা লিকহেডস অন্তর্ভুক্ত রয়েছে। এগুলি আর কঠোর অর্থে নিয়মিত প্রকাশ হতে পারে না (নিয়মিত আনুষ্ঠানিক ভাষাগুলি প্রসঙ্গে) তবে এখনও সে হিসাবে উল্লেখ করা হয়।
lk-
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.