উত্তর:
আমি ব্যবহার করব \zs
:%s/.*\zspattern/replacement/
কিছুটা ব্যাখ্যা:
.
যে কোনও একক চরিত্রকে উপস্থাপন করে*
লোভী মিলে প্রতিনিধিত্ব করে (যত বেশি সম্ভব)তেজ আপনি শূন্য প্রস্থ নোঙ্গর ব্যবহার করতে পারেন \zs
এবং \ze
শুরু ও অনুসন্ধান প্যাটার্ন, যা আপনি মেলে ইচ্ছুক শেষে সংজ্ঞায়িত করতে। আপনার প্যাটার্নে আগে \zs
এবং পরে যে কোনও কিছুই \ze
প্রতিস্থাপনের দ্বারা অকার্যকর থাকবে।
এটা সহজ বুঝতে তৈরি করতে হলে, আমি থেকে এই উদাহরণে ব্যবহার করতে চান সেটি উইকিয়া এর অনুসন্ধান এবং প্রতিস্থাপন :
ব্যবহার করে
\zs
এবং\ze
কোনও প্যাটার্নের শুরু এবং শেষ সেট করে টাইপিং সংরক্ষণ করুন । উদাহরণস্বরূপ, পরিবর্তে::s/Copyright 2007 All Rights Reserved/Copyright 2008 All Rights Reserved/
ব্যবহার করুন:
:s/Copyright \zs2007\ze All Rights Reserved/2008/
আরও তথ্যের জন্য, দেখুন
.*
হয় লোভী ।
আপনি \(.*\)
সমস্তকে গ্রুপ করে শেষ ম্যাচের জন্য অনুসন্ধান করতে পারেন তবে শেষ বারের মতো pattern
। তারপরে বন্দী গোষ্ঠীর সাথে প্রস্থান করা \1
, এবং যুক্ত করা replacement
।
:%s/\(.*\)pattern/\1replacement/
\zs
সমাধানের চেয়ে নিকৃষ্ট , এতে আপনার \1
দৃষ্টিভঙ্গি কার্যকরীভাবে সমতুল্য, তবে আরও ভার্বোজ। (অন্যদিকে , কারওর জন্য মনে রাখা আরও সহজ হতে পারে, বিশেষত যদি তারা অন্য রেজেক্স স্বাদে অভ্যস্ত হয়।))
সম্পূর্ণতার জন্য আমি ভেবেছিলাম আমি একটি বিকল্প পোস্ট করব। ভিমের একাধিক আইটেম রয়েছে যার মধ্যে কিছু বেশি নিয়মিত অভিব্যক্তি বর্ণনাকারী দাবির সাথে মিল (নেতিবাচক / ইতিবাচক চেহারা / চেহারা)। /programming/2973436/regex-lookahead-lookbehind-and-atomic-groups
\@!
এক্ষেত্রে আমরা একটি নেতিবাচক চেহারা চাই , যার অর্থ আমরা দৃ we়ভাবে বলতে চাই যে আইটেমের পূর্ববর্তী পরমাণুটি প্যাটার্নের পরে ঘটে না । এক্ষেত্রে পরমাণু নিজেই অন্য যে কোনও কিছুর আগে প্যাটার্ন:
:%s/pattern\(.*pattern\)\@!/replacement/
প্রথম বন্ধনের অভ্যন্তরের অংশটি শূন্য-প্রস্থ এবং ম্যাচে অন্তর্ভুক্ত নয় তাই প্রতিস্থাপন দ্বারা প্রতিস্থাপিত হয় না।
:h \@!
আরও তথ্যের :h pattern-multi-items
জন্য বা অন্যান্য দর্শনীয় প্রকরণ সহ পুরো বিভাগের জন্য।
\zs
আপনার উত্তরে কী করে তার একটি প্রাথমিক বর্ণনা সরবরাহ করতে পারেন ?