সেড বা পার্লের মধ্যে ভিমের \ zs এর সমতুল্য কি আছে?


11

ভিমে আমরা \zs"সত্যই ম্যাচটি এখানেই শুরু করতে" বলতে পারমাণবিকটি ব্যবহার করতে পারি:

:%s/funnyword\zs.*$/otherword/

সেড বা এমনকি পার্ল জন্য সমতুল্য আছে?

উত্তর:


15

পার্লে (এবং পিসিআরই) এটি শূন্য প্রস্থের বর্ণমালার সাথে অর্জনযোগ্য :

(?<=funnyword).*$

যা "মজার শব্দ" এর সাথে মেলে তবে এটি ম্যাচের অংশ হিসাবে গ্রাস করে না। এগুলি কেবল চেহারাটির পিছনে স্থির দৈর্ঘ্যের পাঠ্যের সাথে কাজ করে। (?<!...)কিছু পাঠ্য নেই বলে উল্লেখ করতে আপনি নেতিবাচক লুকবিহাইন্ডস ( ) ব্যবহার করতে পারেন ।

পার্লের যে কোনও যুক্তিসঙ্গত সাম্প্রতিক সংস্করণে এটি ব্যবহার করার \Kজন্য প্রায় একটি সঠিক বিকল্প exact\zs

funnyword\K.*$

\Kএতদূর মিলেছে সমস্ত কিছু ত্যাগ করে তবে সেই বিন্দু থেকে মিলতে থাকে। আগের অংশটি \Kনির্দিষ্ট দৈর্ঘ্যের হতে হবে না। এটি এখন পিসিআরই-তে রয়েছে , তবে এটির কোন সংস্করণটি এসেছে তা আমি নিশ্চিত নই।

\zeপরিবর্তে ব্যবহার করে শূন্য-প্রস্থের লুকোহেড দিয়ে অর্জন করা যায় (?=...)। এই প্যাটার্নটির নির্দিষ্ট দৈর্ঘ্যের প্রয়োজন নেই


কারণ sed ব্যবহার BREs POSIX , কোন lookaround হয় । এই ক্ষেত্রে, আপনি সাধারণ ক্যাপচারিং গ্রুপ ব্যবহার করে মোটামুটি সহজেই এটিকে সিমুলেট করতে পারেন:

sed -e 's/\(funnyword\).*$/\1otherword/'

আপনি ইতিবাচক চেহারা জন্য একই কাজ করতে পারেন। আপনার যদি সত্যিই আরও জটিল প্রয়োজন হয় তবে আপনাকে পার্ল বা অন্য কোনও পদ্ধতির দিকে নজর দিতে হতে পারে।

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