ভিমে মাল্টি-লাইন রেজেক্স সমর্থন


116

আমি লক্ষ করেছি যে একাধিক লাইনের সাথে মিলের জন্য স্ট্যান্ডার্ড রেজেক্স সিনট্যাক্সটি ব্যবহার করা / গুলি এর মতো:

This is\nsome text
/This.*text/s

এটি পার্লে উদাহরণস্বরূপ কাজ করে তবে ভিমে সমর্থিত বলে মনে হয় না। পরিবর্তে, আমাকে আরও নির্দিষ্ট হতে হবে:

/This[^\r\n]*[\r\n]*text/

কেন এটি হওয়া উচিত তার কোনও কারণ আমি খুঁজে পাচ্ছি না, তাই আমি ভাবছি আমি সম্ভবত ভিএম সাহায্যে প্রাসঙ্গিক বিটগুলি মিস করেছি।

কেউ এই আচরণকে একভাবে বা অন্যভাবে নিশ্চিত করতে পারবেন?

উত্তর:


176

হ্যাঁ, পার্লের //sমডিফায়ার ভিম রেগেক্সে উপলভ্য নয়। :h perl-patternsভিম এবং পার্ল রেজিজেসের মধ্যে বিশদ এবং অন্যান্য পার্থক্যের একটি তালিকা দেখুন ।

পরিবর্তে আপনি ব্যবহার করতে পারেন \_., যার অর্থ "নিউলাইন সহ কোনও একক অক্ষরের সাথে মেলে"। আপনার কাছে যা আছে তার চেয়ে এটি খানিকটা খাটো। দেখুন :h /\_.

/This\_.*text/

4
সুন্দর - আমার জীবনটা একটু সহজ হয়ে গেল got আমি (। | \ N) *
ojrac

2
ফরোয়ার্ড স্ল্যাশ :h /\_.কি করতে পারে? মানে, আমি জানি এটি কাজ করে তবে কেন :h /\_.কাজ করে, এবং হয় না :h \_.?
সম্পাদিত

2
@ ফরোয়ার্ড স্ল্যাশকে সংশোধন করেছেন (যা অনুসন্ধানের জন্য ডিফল্ট কী) \_.আপনি যে প্রবন্ধটি পড়তে পারেন তা সুনির্দিষ্ট করে : আমাকে অনুসন্ধানের অভিব্যক্তির জন্য সহায়তা দিন\_.
ফ্লোরিয়ান

তবে, মনে হচ্ছে আমি এই অভিব্যক্তিটির সাথে অলস মিলন সম্পাদন করতে পারছি না, যদিও আমি এটি বন্ধনীতে অন্তর্ভুক্ত করেছি? এটা করতে কোন উপায় আছে কি?
xji

2
@ জিক্সিয়াং অলস ম্যাচের জন্য foo bar \n foo baz \n foo, চেষ্টা করুন/foo\_.\{-}foo
জেমস এম। লে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.