\ W এবং \ b নিয়মিত অভিব্যক্তি মেটা অক্ষরের মধ্যে পার্থক্য


142

যে কেউ এর মধ্যে পার্থক্য ব্যাখ্যা করতে পারবেন \bএবং \wরেগুলার এক্সপ্রেশন metacharacters? এটি আমার বোঝা যায় যে এই উভয় মেটাচারার শব্দের সীমানার জন্য ব্যবহৃত হয়। এগুলি ছাড়াও কোন মেটা চরিত্রটি বহুভাষিক সামগ্রীর জন্য দক্ষ?


11
\wএকটি শব্দের চরিত্রকে\b প্রতিনিধিত্ব করে , যখন কোনও শব্দের চরিত্র এবং একটি শব্দহীন চরিত্রের মধ্যে একটি শব্দের সীমানা উপস্থাপন করে । তারা একই জিনিস না।
BoltClock

উত্তর:


259

মেটাচার্যাক্টর \bহল ক্যারেট এবং ডলারের চিহ্নের মতো অ্যাঙ্কর। এটা একটা অবস্থান করে একটি বলা হয় এ ম্যাচ "শব্দ সীমানা" । এই ম্যাচটি শূন্য দৈর্ঘ্যের।

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

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

সোজা কথায়: রুপে নিয়মিত অভিব্যক্তি ব্যবহার করে আপনাকে "কেবলমাত্র পুরো শব্দ" অনুসন্ধান \bকরতে দেয় । একটি "শব্দের চরিত্র" এমন একটি চরিত্র যা শব্দ গঠনে ব্যবহৃত হতে পারে। সকল অক্ষর আছে যা নয় "শব্দ অক্ষর" হয় "অ-শব্দ অক্ষর"\bword\b

সমস্ত স্বাদে, অক্ষরগুলি [a-zA-Z0-9_]শব্দের অক্ষর। এগুলি শর্ট-হ্যান্ড ক্যারেক্টার ক্লাসের সাথে মিলেছে \w। স্বাদ তুলনায় শব্দ সীমার জন্য "ascii" দেখানো স্বাদগুলি কেবল এগুলিকে শব্দের অক্ষর হিসাবে স্বীকৃতি দেয়।

\wসাধারণত "শব্দের চরিত্র" বলতে বোঝায় [A-Za-z0-9_]। আন্ডারস্কোর এবং অঙ্কগুলি অন্তর্ভুক্ত করার বিষয়টি লক্ষ্য করুন।

\Bএর অবহেলিত সংস্করণ \b\Bযেখানে \bনা পজিশনে প্রতি পজিশনে মেলে । কার্যকরভাবে, \Bদুটি শব্দের অক্ষরের মধ্যে যে কোনও অবস্থানের পাশাপাশি দুটি শব্দহীন অক্ষরের মধ্যে যে কোনও অবস্থানে মিল রয়েছে।

\Wসংক্ষিপ্ত [^\w], এর অবহেলিত সংস্করণ \w


21

\wএকটি শব্দের চরিত্রের সাথে মেলে। \bশূন্য-প্রস্থের ম্যাচটি এমন এক অবস্থানের অক্ষরের সাথে মেলে যা একদিকে শব্দের অক্ষর এবং অন্যদিকে শব্দের অক্ষর নয় not (শব্দের অক্ষর নয় এমন জিনিসগুলির উদাহরণগুলির মধ্যে শ্বেত স্পেস, স্ট্রিংয়ের শুরু এবং শেষ ইত্যাদি অন্তর্ভুক্ত)

\wম্যাচ a, b, c, d, e, এবং f"abc def"
\bম্যাচ সামনে (শূন্য-প্রস্থের) অবস্থান aপর c, আগে d, এবং পরে fমধ্যে"abc def"

দেখুন: http://www.regular-expressions.info/references.html/


3
এটি আরও সঠিকভাবে বলা যায় যে এটি একটি শব্দের চরিত্রের সাথে একটি শব্দের চরিত্রের নয় এবং একটি শব্দের চরিত্রের মধ্যে সীমানা কারণ এটি একটি শব্দের সাথে একটি অক্ষর এবং একটি স্ট্রিংয়ের শুরু বা শেষের সাথে মেলে যদি সেই অক্ষরটি স্ট্রিংয়ের শুরু / শেষে থাকে।
এমআরএবি

5
এটি এখনও বেশ সঠিক নয় not \bএকটি শূন্য প্রস্থের দাবী; এটি কোনও চরিত্রের সাথে মেলে না , এটি একটি অবস্থানের সাথে মেলে ।
অ্যালান মুর

10

@ মাহেন্দ্র, আপনি সম্ভবত \W(এর পরিবর্তে \w) এবং এর মধ্যে পার্থক্য বুঝিয়েছিলেন \b। যদি তা না হয় তবে আমি @ বোল্টক্লক এবং @jwismar এর সাথে একমত হব। না হলে পড়া চালিয়ে যান।

\Wকোনও শব্দহীন চরিত্রের সাথে মেলে এবং তাই শব্দের সীমানা মেলে এটি ব্যবহার করার চেষ্টা করা সহজ। সমস্যাটি হ'ল এটি কোনও লাইনের শুরু বা শেষের সাথে মেলে না। \bএটি শব্দের সীমানা মেলাতে বেশি উপযুক্ত কারণ এটি কোনও লাইনের শুরু বা শেষের সাথেও মিলবে। মোটামুটি কথা বলতে (আরও অভিজ্ঞ ব্যবহারকারীরা আমাকে এখানে সংশোধন করতে \bপারেন ) হিসাবে ভাবা যেতে পারে (\W|^|$)। [সম্পাদনা করুন: নীচে @ ওমেগা যেমন উল্লেখ করেছেন, \bশূন্য দৈর্ঘ্যের ম্যাচ তাই (\W|^|$)কঠোরভাবে সঠিক নয়, তবে আশা করি ভিন্নটির ব্যাখ্যা দিতে সহায়তা করেছেন]

দ্রুত উদাহরণ: স্ট্রিংয়ের জন্য Hello World, .+\Wমিলবে Hello_(স্থানের সাথে) তবে মিলবে না World.+\bউভয় Helloএবং মিলবে World


আমি \bএকই অর্থটির সাথে একমত নই (\W|^|$), যেহেতু (\W|^|$)মিলে যাওয়া ফলাফলের মধ্যে অ-শব্দ অক্ষর অন্তর্ভুক্ত করা হবে। আপনি এই সত্যটি এখানে পরীক্ষা করতে পারেন => regexr.com/3qf98
ভিক্টর

\bআমার জন্য, অর্থ (?<=\W|^|$)যখন কোনও প্যাটার্নের আগে ব্যবহৃত হয়েছিল এবং (?=\W|^|$)যখন কোনও প্যাটার্ন পরে ব্যবহৃত হয়। আমি এখানে যা বলছি => regexr.com/3qf9h আপনি যাচাই করতে পারেন । ঠিক \bএখানেই অ্যাঙ্করগুলির ফলাফলের সাথে তুলনা করুন => regexr.com/3qf9t
ভিক্টর

4
\b <= this is a word boundary.

শব্দের চরিত্র দ্বারা অনুসরণ করা তবে শব্দের চরিত্রের আগে নয় বা এমন একটি শব্দের চরিত্রের পরে রয়েছে তবে শব্দের চরিত্রের পরে নয় a

\w <= stands for "word character". 

এটি সর্বদা ASCII টি অক্ষরের সাথে মেলে [A-Za-z0-9_]

আপনি মেলানোর চেষ্টা করছেন কিছু নির্দিষ্ট আছে?

নতুনদের জন্য বা কেবল আপনার ক্ষুধা ভিজিয়ে দেওয়ার জন্য কিছু দরকারী রেগেক্স ওয়েবসাইট।

আমি এটি একটি খুব দরকারী বই বলে মনে করেছি:


5
এটি একটি ভাল উত্তর, তবে এটি মনে রাখা দরকারী যে \wএটি সর্বদা ASCII অক্ষরের সমতুল্য নয় [A-Za-z0-9_]- এটি বর্ণানুক্রমিক ইউনিকোড কোড পয়েন্টগুলির সাথেও মিলবে এবং লোকেলটি যথাযথভাবে সেট করা থাকলে 8-বিট আইএসও-ল্যাটিন -1 বর্ণের সাথে মিলবে may ।
টিম পিয়ার্স

2

\wহয় না একটা কথাও সীমানা, এটা আন্ডারস্কোর সহ যেকোন শব্দ চরিত্র, মেলে: [a-zA-Z0-9_]\b এটি একটি শব্দের সীমানা, এটি একটি শব্দ এবং একটি অ-অক্ষরীয় অক্ষরের মধ্যে অবস্থানের সাথে মেলে: \Wবা [^\w]

যদিও এই বাস্তবায়নগুলি ভাষা থেকে আলাদা হয়ে যায়।

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