একটি ম্যাচের মধ্যে সংক্ষিপ্ত মিলগুলি পছন্দ করে এমন রেজেক্স? (এটি অ লোভীর চেয়ে বেশি জড়িত)


9

আমি একটি বাফারের ভিতরে अस्पष्ट অনুসন্ধান করার জন্য একটি স্ক্রিপ্ট তৈরি করার চেষ্টা করছি। মূল ধারণাটি হ'ল কিছু ইনপুট নেওয়া এবং .\{-}প্রতিটি জোড়া অক্ষরের মধ্যে সন্নিবেশ করানো , যেমন fooহয়ে যায় f.\{-}o.\{-}o

এটি মোটামুটি ভাল কাজ করে তবে প্রচুর অ-আদর্শ ম্যাচ নিয়ে আসে। আমি মনে করি একটি অস্পষ্ট অনুসন্ধানে প্রথমে সবচেয়ে সংক্ষিপ্ত মিলগুলি পাওয়া উচিত। নিম্নলিখিত উদাহরণ বিবেচনা করুন:

public void put()

put(তাই, p.\{-}u.\{-}t) একটি अस्पष्ट অনুসন্ধান করা সম্পূর্ণ স্ট্রিংয়ের সাথে মিলবে তবে সেই ম্যাচের মধ্যে public void putসংক্ষিপ্ততরটি putআরও কার্যকর হবে।

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


আরও দেখুন: স্ট্যাকওভারফ্লো.com / q / 15191291 (যদিও আপনার প্রশ্নের কোনও উত্তর নেই, দুর্ভাগ্যক্রমে)
ডোরকনব

1
@ ডুরকনব, কোনও উত্তর নেই, তবে এটি একটি ভাল বিষয় তুলে ধরেছে: রেজেেক্স কোনও স্ট্রিংয়ের মধ্য থেকে অনুসন্ধান শুরু করে না। কাজটি পেতে আমাকে কিছু ভিমস্ক্রিপ্ট জড়িত থাকতে পারে। আমি (দীর্ঘ) ম্যাচটি উল্টো করার ধারণাটি অন্বেষণ করছি এবং বিপরীত প্যাটার্নটি এটি অনুসন্ধান করব।
tommcdo

2
টিম পোপ আজ ভিম-খড়ের ছাঁট ছাড়লেন । এটি আপনার যা প্রয়োজন অনুরূপ শোনাচ্ছে। হতে পারে আপনি এ থেকে কিছু অনুপ্রেরণা পেতে পারেন বা এটি ব্যবহার করতে পারেন।
টোকয়ামি

1
আমি চাই ম্যাচটি যতদূর সম্ভব দেরীতে শুরু হয়ে যত তাড়াতাড়ি সম্ভব শেষ হওয়া উচিত, তবুও প্যাটার্নটি সন্তুষ্ট করার সময়।
tommcdo

1
আপনার তথাকথিত আনুমানিক স্ট্রিংয়ের সাথে মিলে যাওয়া অ্যালগরিদমগুলিতে একবার নজর দেওয়া উচিত , এগুলি রেগেক্সপসের চেয়ে अस्पष्ट ফাইন্ডার বাস্তবায়নের জন্য আরও উপযুক্ত সরঞ্জাম।
toro2k

উত্তর:


2

পর্যাপ্ত উদাহরণ নেই তবে আমি মনে করি এটি আপনার যা চায় তা করে।

.*\zsp.\{-}u.\{-}t

putপরিবর্তে আপনার উদাহরণে মেলে public void put। মূলত .*রেজেক্স ইঞ্জিনটিকে স্ট্রিংটি পিছনের দিকে সন্ধান করতে বাধ্য করে, যেহেতু .*পুরো স্ট্রিংটি প্রথমে ব্যাকট্র্যাকগুলি গ্রাস করে, এর সর্বশেষতম ম্যাচটি সন্ধান করতেp.\{-}u.\{-}t


আমি এর আগেও চেষ্টা করেছিলাম (তবে এখন অবধি ভুলে গেছি)। এটি বেশ ভাল, তবে এর অর্থ হ'ল প্রতি লাইন কেবল একটি ম্যাচ হবে (শেষ সম্ভাব্য ম্যাচ)। আমি এখনও pouty puppetদুটি ম্যাচ উপার্জনের মতো একটি লাইন চাই ।
tommcdo
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.