শব্দ সীমানা সম্পর্কে বিভ্রান্ত


13

আমি এটি নিয়ে অনেক গবেষণা করে চলেছি, তবে আমি এখনও এ সম্পর্কে পরিষ্কার নই। কি শব্দ সীমানা মানে? এটার কাজ কি?

সুতরাং, উদাহরণস্বরূপ, কেউ আমাকে এই আদেশটি দয়া করে ব্যাখ্যা করতে পারে?

egrep '\b[A-Z]+\b' filename.sh

1
একটি "শব্দের সীমানা" হ'ল সরঞ্জামটি যা কিছু হিসাবে সংজ্ঞায়িত করে ... কেউ কেউ নোস্পেস / স্পেস বা স্পেস / নোস্পেসকে শব্দের সীমানা হিসাবে বিবেচনা করে, অন্যরা একটি "শব্দ" কে রচিত হিসাবে বিবেচনা করে [azA-Z0-9_]। ম্যানুয়ালটির জন্য ব্যবহার করুন egrep(1), সম্ভবত নিয়মিত প্রকাশের জন্য ব্যবহৃত ব্যবহারের জন্য ডুমেন্টেশন।
ভনব্র্যান্ড

উত্তর:


12

এখানে বর্ণিত হিসাবে , উদাহরণস্বরূপ, এটি শব্দের মধ্যে মেলে :

তিনটি পৃথক অবস্থান রয়েছে যা শব্দ সীমানা হিসাবে যোগ্য:

  1. স্ট্রিংয়ে প্রথম অক্ষরের আগে, প্রথম অক্ষরটি যদি একটি শব্দের অক্ষর হয়।
  2. স্ট্রিংয়ের শেষ অক্ষরের পরে যদি শেষ অক্ষরটি একটি শব্দের চরিত্র হয়।
  3. স্ট্রিংয়ের দুটি অক্ষরের মধ্যে যেখানে একটি শব্দের চরিত্র এবং অন্যটি শব্দের চরিত্র নয়।

এখানে এই মামলার প্রতিটি উদাহরণ দেওয়া হল:

  1. স্ট্রিংয়ের জন্য foobar, প্রথম কেস মেলে

     foobar
    ^-----here
    
  2. স্ট্রিংয়ের জন্য foobar, দ্বিতীয় কেস মেলে

    foobar
          ^--here
    
  3. স্ট্রিংয়ের জন্য foo bar, তৃতীয় কেস মিলবে

    foo bar
       ^--here, because space is not a word character
    

শব্দের চরিত্র হিসাবে যা যোগ্যতা রয়েছে তা নির্দিষ্ট নিয়মিত প্রকাশের প্রয়োগের উপর নির্ভর করে। তবে সব ক্ষেত্রে অক্ষর ( [a-z]এবং [A-Z]), সংখ্যা ( [0-9]) এবং _শব্দের অক্ষর হিসাবে বিবেচিত হয়।


সুতরাং, আপনি পোস্ট করেছেন উদাহরণস্বরূপ ( \b[A-Z]+\b) এর অর্থ দীর্ঘতম স্ট্রিংটি সন্ধান করুন যা দুটি শব্দের বাউন্ডারের মধ্যে থাকে এবং এটি কেবলমাত্র বড় হাতের অক্ষর দ্বারা গঠিত। উদাহরণ দিয়ে ব্যাখ্যা করা আরও সহজ হতে পারে:

echo "FOOBAR" | egrep '\b[A-Z]+\b'   # Works
echo "FOO BAR" | egrep '\b[A-Z]+\b'  # Works
echo "aFOOBARb" | egrep '\b[A-Z]+\b' # Does not work, we want capitals only
echo "12345" | egrep '\b[A-Za]+\b'   # Does not work, no letters
echo "1FOOBAR2" | egrep '\b[A-Z]+\b' # Does not work, 1 and 2 are word chars
echo "_FOOBAR_" | egrep '\b[A-Z]+\b' # Does not work, _ is a word char
echo "#FOOBAR$" | egrep '\b[A-Z]+\b' # Works, # and $ are not word chars

দুর্দান্ত ব্যাখ্যা, কেবল মনে রাখবেন যে সোলারিস ' egrep(না /usr/xpg4/bin/egrep) \bএইভাবে আচরণ করে না । উদাহরণস্বরূপ, echo "FOOBAR" | egrep '\b[A-Z]+\b'মেলে না।
পিটার

0
egrep '\b[A-Z]+\b' filename.sh

এটি বিরতি দেয়:

  1. [A-Z]চরিত্র শ্রেণীর যে কোনও একটি চরিত্রকে উপস্থাপন করে [ABCDEFGHIJKLMNOPQRSTUVWXYZ]
  2. [A-Z]+বড় হাতের অক্ষরের এক বা একাধিক উপস্থিতি উপস্থাপন করে। : কখগঘ ম্যাচ হবে A, HELLO, IS, I, ELEPHANT, ইত্যাদি
  3. '\bINDIA\b': হুবহু INDIAবড় হাতের অক্ষরের মতো এটি উপরের ক্ষেত্রে শব্দটির সন্ধান করে। এটি মেলে নাINDIANA । সুতরাং একই নীতি প্রয়োগ - '\b[A-Z]+\b'উপরের ক্ষেত্রে এক বা একাধিক অক্ষরযুক্ত পুরো শব্দগুলির সন্ধান করবে।
  4. সুতরাং egrep '\b[A-Z]+\b' filename.shফাইলের একটি বা একাধিক অক্ষরযুক্ত সমস্ত শব্দের অনুসন্ধান করতে হবে - filename.sh

\b - হুবহু পুরো শব্দ অনুসন্ধানের মতো।

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