RegExp মিলের স্ট্রিংটি আমার সাথে শুরু হচ্ছে না


93

পিএমডি-র জন্য আমি এমন একটি নিয়ম চাই যা আমাকে এই কুৎসিত ভেরিয়েবল সম্পর্কে সতর্ক করে যা দিয়ে শুরু হয় my
এর মানে হল আমি সব ভেরিয়েবল যা না মেনে নিতে হবে না দিয়ে শুরু my

সুতরাং, আমার একটি রেজিএক্স (পুনরায়) দরকার যা নীচের মত আচরণ করে:

re.match('myVar')       == false
re.match('manager')     == true
re.match('thisIsMyVar') == true
re.match('myOtherVar')  == false
re.match('stuff')       == true

আমি বিভিন্ন চেষ্টা করেছি কিন্তু এখনও এটি কাজ করে না।


4
আমি মনে করি আসলে পিছনে একটি নেতিবাচক চেহারা হওয়া উচিত (সামনে একটি নেতিবাচক চেহারা নয়)।
ইন্দ্রিট

উত্তর:


43

অন্যরা যেমন পরামর্শ দিয়েছিল তেমনই আপনি লকহ্যাডের দৃser়তা ব্যবহার করতে পারেন। বা, আপনি যদি কেবলমাত্র বেসিক নিয়মিত প্রকাশের বাক্য গঠন ব্যবহার করতে চান:

^(.?$|[^m].+|m[^y].*)

এটি স্ট্রিংগুলির সাথে মেলে যা হয় শূন্য বা একটি বর্ণের দীর্ঘ ( ^.?$) এবং সুতরাং এটি হতে পারে না my। বা দুটি বা ততোধিক অক্ষরের সাথে স্ট্রিং যেখানে প্রথম অক্ষরটি আর কোনও অক্ষর না হলে mঅনুসরণ করতে পারে ( ^[^m].+); অথবা যদি প্রথম চরিত্রটি হয় তবে mএটি অবশ্যই একটি y( ^m[^y]) দ্বারা অনুসরণ করা উচিত ।


এটিই এখন আমরা ব্যবহার করতে পারি। দেখে মনে হচ্ছে বর্ধিত রেজিপ্স্পে কোনও সমস্যা আছে তবে এটি এখনই ঠিক কাজ করে।
ডোমিনিক স্যান্ডজাজা

169
^(?!my)\w+$

কাজ করা উচিত.

এটি প্রথমে নিশ্চিত করে যে myস্ট্রিংয়ের শুরুতে এটি মিলানো সম্ভব নয় এবং তারপরে স্ট্রিংয়ের শেষ অবধি বর্ণমালার অক্ষরের সাথে মেলে। স্ট্রিংয়ের যে কোনও জায়গাতেই হোয়াইটস্পেস রিজেক্স ব্যর্থ হতে পারে। আপনার ইনপুটটির উপর নির্ভর করে আপনি রেজেক্সে যাওয়ার আগে স্ট্রিংয়ের সামনের এবং পিছনের অংশে হোয়াইটস্পেসটি স্ট্রাইপ করতে চাইতে পারেন, বা রেজেেক্সের মতো alচ্ছিক হোয়াইটস্পেস ম্যাথার যুক্ত করতে পারেন ^\s*(?!my)(\w+)\s*$। এক্ষেত্রে ব্যাকরেফারেন্স 1 এ ভেরিয়েবলের নাম থাকবে।

এবং আপনার যদি নিশ্চিত করতে হয় যে আপনার চলক নামটি অক্ষরের একটি নির্দিষ্ট গ্রুপের সাথে শুরু হয়, বলুন [A-Za-z_], ব্যবহার করুন

^(?!my)[A-Za-z_]\w*$

থেকে পরিবর্তন দ্রষ্টব্য +করার *


63
/^(?!my).*/

(?!expression)একটি নেতিবাচক চেহারা; এটি এমন একটি অবস্থানের সাথে মেলে যেখানে সেই অবস্থানের সাথে আরম্ভ expression হয় না


7

ইতিবাচক ম্যাচ করা এবং সেই স্ট্রিংগুলিকে প্রত্যাখ্যান করা - এটি গ্রহণযোগ্য স্ট্রিংগুলি সন্ধান করার জন্য নেতিবাচকটির সাথে মিল রেখে কি উল্লেখযোগ্যভাবে বেশি পঠনযোগ্য হবে না?

/^my/

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