বাশ কোন নিয়মিত এক্সপ্রেশন ইঞ্জিন টাইপ ব্যবহার করে?


12

আমি আমার নিয়মিত অভিব্যক্তি প্রোটোটাইপ এবং ডিবাগ করতে RegEx বন্ধু ব্যবহার করি । RegEx বাডি আমাকে বিভিন্ন নিয়মিত এক্সপ্রেশন ইঞ্জিন প্রকারের (। নেট, জাভা, পার্ল, GNU BRE, GNU ERE, পসিক্স, BRE, পজিক্স আগে ইত্যাদি) মধ্যে নির্বাচন করতে দেয়।

বাশ কোন নিয়মিত এক্সপ্রেশন ইঞ্জিন ব্যবহার করে (উদাহরণস্বরূপ ifএবং caseবিবৃতিগুলিতে)? আমি সেন্টোস 5.5 32 বিট এবং ব্যাশ 3.2.25 (1) চালাচ্ছি:

[kevin@mon01 scratch]$ bash --version
GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.

আমি অনুমান করছি এটি GNU BRE বা GNU ERE হবে?

উত্তর:


11

বাশ (এবং সাধারণভাবে পসিক্স শেলস) caseবিবৃতিতে নিয়মিত অভিব্যক্তি ব্যবহার করে না বরং গ্লোব নিদর্শনগুলি ব্যবহার করে

=~অপারেটরটি ব্যবহার করে নিয়মিত প্রকাশের জন্য সীমিত সমর্থন রয়েছে ; এখানে বিস্তারিত দেখুন: http://mywiki.wooledge.org/BashGuide/Patterns ,
যা বলেছে যে bashবর্ধিত নিয়মিত এক্সপ্রেশন (ERE) ব্যবহার করে।


ধন্যবাদ। দ্বিতীয় লিঙ্কটি পূর্বের উল্লেখ করেছে যা আমি অনুমান করছি GNU ERE।
কেভ

3

বাশ উপরোক্ত ধরণের নিয়মিত প্রকাশ ifএবং caseবিবৃতিতে কোনও ব্যবহার করে না ।

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

তবে নোট করুন যে প্রসারিত শেল গ্লোবগুলি shopt -s extglob শেল স্ক্রিপ্টে বা ইন্টারেক্টিভভাবে উভয়ের সাথে পূর্বের ব্যবহার সক্ষম করতে হবে ।

একক ব্যতিক্রমী স্থানে, যথা [[ ]]শর্তাধীন কমান্ডের মধ্যে, =~বাইনারি সম্পর্কটি ডান পাশে বর্ধিত নিয়মিত এক্সপ্রেশন ERE এর বিপরীতে বাম দিকে একটি স্ট্রিং চেক করতে দেয়।


0

লিঙ্কযুক্ত বাশ গাইড অনুসারে, ব্যাশ (যেহেতু সংস্করণ 3.0+) ব্যবহার করে: " বর্ধিত নিয়মিত এক্সপ্রেশন (ERE) উপভাষা"।

সেই উপভাষার আরও তথ্য এখানে পাওয়া যাবে

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