একটি নিয়মিত প্রকাশে, কোন চরিত্রের পালাবার প্রয়োজন?


23

সাধারণভাবে, নিয়মিত অভিব্যক্তিতে কোন অক্ষরগুলি পালানোর প্রয়োজন হয়?

উদাহরণস্বরূপ, নিম্নলিখিতগুলি সিন্টেক্সিকভাবে সঠিক নয়:

echo '[]' | grep '[]'
grep: Unmatched [ or [^

এই তবে, হয় syntatically সঠিক:

echo '[]' | grep '\[]'
[]

নিয়মিত প্রকাশে অক্ষরগুলি পালাতে হবে এমন কোন ডকুমেন্টেশন আছে, এবং কোনটি হওয়া উচিত নয়?

উত্তর:


12

এটি আবেদনের উপর নির্ভর করে। আপনার উদাহরণে [অবশ্যই যুক্তি হিসাবে উদ্ধৃত করা উচিত grepতবে তা নয় echo

শেলের জন্য ( পসিক্স স্পেস থেকে ):

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

অ্যাপ্লিকেশনটি নীচের অক্ষরগুলিকে উদ্ধৃত করবে যদি তারা তাদের প্রতিনিধিত্ব করে:

|  &  ;  <  >  (  )  $  `  \  "  '  <space>  <tab>  <newline>

এবং নিম্নলিখিতগুলি নির্দিষ্ট পরিস্থিতিতে উদ্ধৃত করার প্রয়োজন হতে পারে। এটি, আইইইই স্ট্যান্ড 1003.1-2001 এর এই ভলিউমে অন্য কোথাও বর্ণিত অবস্থার উপর নির্ভর করে এই চরিত্রগুলি বিশেষ হতে পারে:

*   ?   [   #   ˜   =   %

বিভিন্ন উদ্ধৃতি ব্যবস্থা হ'ল পালাবার চরিত্র, একক-উদ্ধৃতি এবং ডাবল-কোট। এখানে-নথিটি উদ্ধৃতকরণের অন্য রূপের প্রতিনিধিত্ব করে; এখানে-নথি দেখুন।

সুনির্দিষ্ট প্রোগ্রামগুলি (রেজেক্সস, পার্ল, অ্যাজক ব্যবহার করে) পালানোর ক্ষেত্রে অতিরিক্ত প্রয়োজনীয়তা থাকতে পারে।


8

প্রতিটি অ্যাপ্লিকেশনের নিজস্ব 'বিশেষ' অক্ষরগুলির সেট থাকবে। আপনি যে ইস্যুটি চালিয়েছেন grepতা শেল নয় was যার জন্য অক্ষরগুলি উদ্ধৃত করা দরকার grep, "নিয়মিত এক্সপ্রেসনস" এ ম্যানপেজের বিভাগটি পড়ুন।

শেলের জন্য, যে অক্ষরগুলি উদ্ধৃত করা উচিত সেগুলি হ'ল:

;'"`#$&*?[]<>{}\

এবং যে কোনও সাদা স্থান।

শেলের উপর নির্ভর করে অন্যান্য অক্ষরগুলিও উদ্ধৃত করতে হতে পারে:

!^%

শেলের ম্যানপেজে "শেল গ্র্যামার" এর নিচে দেখুন।


ইতিহাসের প্রসার সহ কয়েকটি শেলের bashমধ্যে ( অন্তর্ভুক্ত) !এখনও ডাবল উদ্ধৃতিতে প্রসারিত হয়, কেবলমাত্র একক উদ্ধৃতিই এর সম্প্রসারণ বন্ধ করবে (বা শেল বিকল্পটি বন্ধ করে দেবে)।
ক্রিস ডাউন

][সর্বদা নয় , উদ্ধৃত করা উচিত নয় । আমি কোনো রেফারেন্স খুঁজে পাইনি {এবং}
Matteo

8

নিয়মিত প্রকাশের একাধিক প্রকার রয়েছে এবং বিশেষ অক্ষরের সেট নির্দিষ্ট ধরণের উপর নির্ভর করে। তাদের কয়েকটি নীচে বর্ণিত হয়েছে। সমস্ত ক্ষেত্রে বিশেষ অক্ষরগুলি ব্যাকস্ল্যাশ দ্বারা পালিয়ে যায় \। উদাহরণস্বরূপ আপনি পরিবর্তে [লিখুন \[। বিকল্পভাবে অক্ষরগুলি (ব্যতীত ^) একে অপরের মতো স্কয়ার বন্ধনীগুলির মধ্যে ঘেঁষে পালানো যেতে পারে [[]

^(উপ-) এক্সপ্রেশনের শুরুতে কিছু বিশেষ প্রসঙ্গে বিশেষের মতো চরিত্রগুলি সমস্ত প্রসঙ্গে পালিয়ে যেতে পারে।

যেমনটি অন্যরা লিখেছেন: শেলটিতে আপনি যদি একক উদ্ধৃতিগুলির মধ্যে প্রকাশটি বন্ধ না করেন তবে আপনাকে ইতিমধ্যে পলাতক রেজেক্সে শেলের জন্য বিশেষ অক্ষরগুলি এড়াতে হবে। উদাহরণ: আপনি পরিবর্তে বাশনের মতো বোর্ন সামঞ্জস্যপূর্ণ শেলগুলিতে (বিকল্পভাবে: বা ) '\['লিখতে পারেন তবে এটি অন্য গল্প।\\["\[""\\["

বেসিক নিয়মিত এক্সপ্রেশন (বিআরই)

বর্ধিত নিয়মিত এক্সপ্রেশন (ERE)


3

grepবিআরই-কে এর রেজেেক্স পদ্ধতি হিসাবে ব্যবহার করে। এটা ভাল ডকুমেন্টেশন এখানে , একটি সাধারণ ভগ্নস্বাস্থ্য শিঠ্ট হবে "কোনো বিশেষ অক্ষর বা metacharacter অব্যাহতি তার আক্ষরিক পেতে, পালাবার ক্রম (তৈরি করতে অব্যাহতি \n, \r,, ইত্যাদি)" যদিও এই সবসময় সত্য নয়, উদাহরণস্বরূপ, আপনি করতে হবে পলায়ন (এবং )তাদের বিশেষ অর্থ পেতে (backreferences)।


0

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

echo '[]' | grep '[]'

শেল যুক্তি প্রেরণ []করার জন্য grepএবং এটি দ্বারা একটি বিকৃত বন্ধনী অভিব্যক্তি হিসাবে পার্স করা হয় grep

echo '[]' | grep \[]

উপরে, আমরা একটি অনুরূপ কেস দেখতে পাচ্ছি। ব্যাকস্ল্যাশ সরানো হয়েছে এবং এতে []যুক্তি হিসাবে সঞ্চারিত হয় grepgrepএকটি ত্রুটিযুক্ত বন্ধনী এক্সপ্রেশন স্বীকৃতি দেয়।

echo '[]' | grep '\[]'

শেষ অবধি, এই ক্ষেত্রে, শেল দ্বারা উদ্ধৃতিগুলি সরানো হয় এবং \[]তর্ক হিসাবে প্রেরণ করা হয় grepতবে এই নির্দিষ্ট ক্ষেত্রে ¹, আক্ষরিক বন্ধনী হিসাবে \[ব্যাখ্যা করা হয় grep। শেল দ্বারা একটি বিশেষ চরিত্র হিসাবে ব্যাকস্ল্যাশটির ব্যাখ্যা রোধ করতে উদ্ধৃতিগুলির প্রয়োজন।


OS পসিক্স স্পেসিফিকেশন

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