নিয়মিত এক্সপ্রেশন সঙ্গে বিশেষ অক্ষর মেলে


10

বলুন এটি খুব সহজ যদি আমি নিম্ন-বর্ণের অক্ষর এবং সংখ্যাসমৃদ্ধ এমন কিছু সন্ধান করতে চাই তবে

product_text | গ্রেপ-ই '[0-9a-z]'

অক্ষরগুলির একটি সেট মেলানোর জন্য বন্ধনীগুলি দরকারী, তবে কিছু বিশেষ যা তাদের সম্পর্কে কী?
আমি, বন্ধনী ব্যবহার করে, মেলে চান কোন চরিত্র কিন্তু একটি ক্লোজিং বন্ধনী: এই এক ]"-", উভয় স্ল্যাশ, একটি ড্যাশ (অথবা হাইফেন) /এবং \, একটি ক্যারেট ^, একটি কোলন :
এটি কি দেখতে দেখতে (আমি জানি এটি কাজ করে না)?

[^] - / \ ^:]

উত্তর:


11

একটি বন্ধনী এক্সপ্রেশন মধ্যে একটি আক্ষরিক ]এবং একটি আক্ষরিক মিল করতে আপনার এগুলি তাদের এইভাবে ব্যবহার করতে হবে:-

[^]/\^:-]

বা আরও ভাল, যেহেতু কিছু সরঞ্জামের জন্য ব্যাকস্ল্যাশ থেকে বাঁচতে হবে :

[^]/\\^:-]

এটিই
ডান-স্কোয়ার-ব্র্যাকেট (']') এর বিশেষ অর্থটি হারাবে এবং ব্র্যাকেট এক্সপ্রেশনটিতে নিজেকে উপস্থাপন করবে যদি এটি তালিকায় প্রথমে উপস্থিত হয় (প্রাথমিক '^' পরে, যদি থাকে)
এবং
হাইফেন-বিয়োগের অক্ষরটি হবে (পরে ইনিশিয়াল '^', যদি থাকে) যদি এটি প্রথম ঘটে নিজেই বলে গণ্য অথবা শেষ তালিকায়
অত: পর
যদি একটি বন্ধনী অভিব্যক্তি নির্দিষ্ট করে উভয় '-' এবং ']', ']' প্রথম স্থাপন করা হইবে, যদি- (পরে '^', যদি থাকে) এবং '-' বন্ধনী এক্সপ্রেশনটির মধ্যে শেষ হয়।
বন্ধনী এক্সপ্রেশন জন্য নিয়ম ERE এবং BRE জন্য একই ।


2
আমি নিরাপদ দিকে থাকতে ব্যাকস্ল্যাশ দ্বিগুণ করব। এটি অনেকগুলি awkবাস্তবায়নের সাথে এবং perlউদাহরণস্বরূপ প্রয়োজন।
স্টাফেন চেজেলাস

"ক্যারেট থেকে বন্ধ বন্ধনী" সম্পর্কে কী? লাইক [^-]](এই ব্যর্থ হয়)?
আইবুগ

2
@ আইবুগ - ​​আপনি যদি এটির সাথে আক্ষরিক মিল করতে চান তবে নিশ্চিত হোন যে এটি প্রথমে সঠিক ব্র্যাকেটটি হওয়া উচিত। আমি নই নিশ্চিত আমি যে "পরিসর" এর পয়েন্ট পেতে যে আপনার যেমন উল্লেখ ^পরে ]তাই [^-]]এমনকি উভয় যদি কাজ করতে না চায় ^এবং ]আক্ষরিক (ঠিক মত চিকিত্সা করা হয় [b-a])। যাইহোক, আপনি যদি ;বন্ধন বন্ধনী থেকে উদাহরণস্বরূপ মিল করতে চান তবে আপনি আগে চরটি ব্যবহার করতে পারেন ](যা ব্যাকস্ল্যাশ) এবং ]বন্ধনী এক্সপ্রেশনটিতে প্রথম চর হিসাবে অন্তর্ভুক্ত করতে পারে যেমন [];-\\]
don_crissti

@ don_crissti কি হবে [[.^.]-[.-.]]? আমার অনুভূতি আছে যে এটি কাজ করবে। আসুন ধরে নেওয়া যাক যে ASCII কোডটি ^আগে ছিল -
iBug

আমার প্রশ্নের একটি অলস সমাধান পেয়েছেন। সহজভাবে অক্ষরগুলির জন্য বিশেষ কিছু পান, যেমন[^[.].][.-.]/\^:]
iBug

7

আশ্চর্যজনকভাবে সম্ভবত, আপনার নির্দিষ্ট জায়গায় কয়েকটি অক্ষর থাকা দরকার have আপনার অবশ্যই ]একটি সেটের প্রথম অক্ষর হিসাবে -থাকতে হবে এবং সেটে অবশ্যই শেষ অক্ষর হওয়া উচিত।

এখানে আপনার প্রয়োজনীয়তা মেটাচ্ছে এমন একটি আরই [^]\^/-]:

echo 'Hello[world]-[sun] ^^ 4/5 or 3\4' | grep -Eo '[^]\^/-]' | xargs
H e l l o [ w o r l d [ s u n 4 5 o r 3 4

1
এটি সত্যিই অদ্ভুত নয়, অস্পষ্টতা এড়াতে কেবল প্রয়োজনীয়
কেভিন

1
দ্বিতীয় [চরিত্রটি সেখানে নেই; ওপি এটি বাদ দিতে চায় না।
স্কট

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