কোনও স্ট্রিংয়ের সঠিক মিলের জন্য নিয়মিত প্রকাশ


153

আমি নিয়মিত প্রকাশের সাথে দুটি পাসওয়ার্ড মিলাতে চাই। উদাহরণস্বরূপ আমার দুটি "123456" এবং "1234567" ইনপুট রয়েছে তবে ফলাফলটি মিলবে না (মিথ্যা)। এবং যখন আমি "123456" এবং "123456" প্রবেশ করেছি তখন ফলাফলটি ম্যাচ (সত্য) হওয়া উচিত।

আমি ভাব প্রকাশ করতে পারিনি। আমি এটা কিভাবে করব?


9
এই ক্ষেত্রে আপনি কেন রেজেক্স চান? (সঠিক) সমতার জন্য চেক করা সত্যই রেগেক্স ছাড়াই করা উচিত।
বার্ট কায়ার্স

কারণ আমরা কীভাবে বাশ স্ক্রিপ্টে পাঠ্য প্রতিস্থাপন করব এবং পার্ল এবং রেজেক্স জড়িত এমন একটি উত্তর পাব।
sudo

একই ইস্যুটির আরও ভাল সমাধান পাওয়া ^ (123456) আপনি যে ফলাফল চান তা দেবে
sdx11


@ স্ক্যানব্যাক্স কেন এই মজাদার প্রশ্ন হবে?
মিলান Velebit

উত্তর:


177

যদি আপনার কোনও ভেরিয়েবলের ইনপুট পাসওয়ার্ড থাকে এবং আপনি 123456 এর সাথে ঠিক মিল করতে চান তবে অ্যাঙ্করগুলি আপনাকে সহায়তা করবে:

/^123456$/

পার্ল ইন পাসওয়ার্ড মেলানোর জন্য পরীক্ষা কিছু হবে

print "MATCH_OK" if ($input_pass=~/^123456$/);

সম্পাদনা করুন:

বার্ট কায়ার্স ঠিক তাই, আপনি কেন এই জন্য আরআরসিএমপি ব্যবহার করবেন না? প্রতিটি ভাষার নিজস্ব উপায়ে এটি থাকে

দ্বিতীয় চিন্তা হিসাবে, আপনি একটি নিরাপদ প্রমাণীকরণ প্রক্রিয়া বিবেচনা করতে চাইতে পারেন :)



2
গুরুত্বপূর্ণ : পার্ল এবং পিসিআরইতে, আপনি এর \zপরিবর্তে চান $/^123456$/উভয় সাথে মিলিত হয় 123456এবং 123456একটি লাইন ফিড অনুসরণ করে, তবে /^123456\z/কেবল ম্যাচ করে 123456
আইকেগামী

154

ম্যালাফক্সের উত্তরে '^' এবং '$' পাঠ্যের শুরু এবং শেষ সনাক্ত করতে ব্যবহৃত হয়েছে।
এগুলি সাধারণত একটি লাইনের শুরু এবং শেষ সনাক্ত করতে ব্যবহৃত হয়।
তবে এটি এই ক্ষেত্রে সঠিক উপায় হতে পারে।
তবে আপনি যদি কোনও সঠিক শব্দের সাথে মিল রাখতে চান তবে '\ বি' ব্যবহার করা আরও মার্জিত উপায় । এই ক্ষেত্রে নিম্নলিখিত ধরণটি '123456 'এর সঠিক বাক্যাংশের সাথে মিলবে।

/ \ B123456 \ b হল /


আপনি কি নিশ্চিত যে এটি সেভাবে কাজ করে? ;) মত একটি Regex পরীক্ষক ব্যবহার করুন এই । "শো ম্যাচ" বোতামটি ব্যবহার করুন এবং আপনি দেখতে পাবেন কেন এটি মেলে। বিটিডব্লিউ মনে আছে '। এটি থেকে বাঁচতে একটি বিশেষ চর এবং ভাল। (এবং ভোট দেওয়ার আগে দু'বার ভাবা ভাল: ডি)।
প্রাইজেথ

2
আপনি যদি আমার উত্তরটি বিভ্রান্তিমূলক বা ভুল বলে মনে করেন তবে আপনি এখনও নিজের উত্তর পোস্ট করতে পারেন (অন্য লোকেরা যেমন করেন) বা আপনার পরামর্শের ব্যাখ্যা দিয়ে আমার পোস্টের নীচে একটি মন্তব্য রাখতে পারেন।
prageeth

26
আপনার উত্তর বিভ্রান্তিকর এবং অনেক লোককে মারাত্মক সমস্যা দেখা দেবে। উদাহরণস্বরূপ, আপনার পদ্ধতির ব্যবহার করে \ bhttp: //www.foo.com \ b মিলবে http://www.bar.com/?http://www.foo.com , যা সম্ভবত কোনও সঠিক মিল নয়, হিসাবে ওপিতে অনুরোধ এটি ইউআরএল বা পাসওয়ার্ড (যা আবার, ওপি অনুরোধ করেছে) যা শব্দহীন অক্ষরগুলি নিয়ে কাজ করে তাদের জন্য গুরুতর সমস্যা সৃষ্টি করবে। আপনার উত্তর স্পষ্ট করা উচিত যাতে অন্যেরা বিপথে না যায়।
0x1mason

2
আপনাকে ব্যাখ্যা করতে হবে। '।' একটি লাল হেরিং হয়। h bhttp: // www \ .foo \ .com \ b এখনও http://www.bar.com/?http://www.foo.com- এর জন্য একটি মিল তৈরি করে । ওপি যা চায় তা নয়।
0x1mason

1
@ 0x1mason সঠিক যেটি URL এর সাথে \bhttp:\/\/www.foo.com\bমিলবে http://www.foo.com=?http://www.foo.comwith প্রথম প্রতিক্রিয়া, ^(শুরু) এবং $(শেষ) ব্যবহার করে এই পরীক্ষকদের মাধ্যমে সেরা পদ্ধতি: regex101.com এবং regexr.com (নীচের লিঙ্কে অন্তর্ভুক্ত পরীক্ষকটি খুব ব্যবহারকারী বান্ধব নয়, এগুলি আরও ভাল)
twknab

34
(?<![\w\d])abc(?![\w\d])

এটি নিশ্চিত করে তোলে যে আপনার মিলটি কিছু অক্ষর, সংখ্যা বা আন্ডারস্কোর দ্বারা না হয় এবং অবিলম্বে অক্ষর বা সংখ্যা বা আন্ডারস্কোর দ্বারা অনুসরণ করা হয় না

সুতরাং এটি "abc" "abc", "abc।", "abc" এর সাথে মিলবে, তবে "4abc" নয়, "abcde"


1
প্রশ্নের শিরোনাম বিভ্রান্তিমূলক; তিনি নিশ্চিত করার চেষ্টা করছেন যে দুটি সম্পূর্ণ স্ট্রিং ঠিক একই রকম। এছাড়াও, \wঅক্ষরের পাশাপাশি অক্ষরের সাথেও মেলে, তাই [\w\d]অপ্রয়োজনীয়।
অ্যালান মুর

সুন্দর। দেখতে regextester.com/?fam=113232 "বেহালার" জন্য আমি এটা ব্যবহার করে দেখতে হয়নি
unsynchronized

() চারপাশের নিদর্শনগুলি আমাকে সহায়তা করেছিল।
গজল

6

আরও সহজ সরল রাস্তা হ'ল সাম্যতা পরীক্ষা করা

if string1 == string2
  puts "match"
else
  puts "not match"
end

তবে, আপনি যদি সত্যিই নিয়মিত অভিব্যক্তিতে লেগে থাকতে চান,

string1 =~ /^123456$/

@ কুরুমি আমি জাভা কোড তৈরি করার চেষ্টা করছি যা txt ফাইলের মধ্যে নির্দিষ্ট শব্দটির সন্ধান করে এবং আমি রেগেক্স ব্যবহার করতে চাই তাই স্ট্রিং.ম্যাচ (/ ^ মাইওয়ার্ড $ /) সহ আমি সেই প্যাটার্নটি / ^ মাইওয়ার্ড $ / ব্যবহার করতে পারি এই txt এ শব্দ?
আন্তওয়ান

3

এছাড়াও আপনি শুরু ও শব্দ শেষে একটি স্থান সংযোজন চেষ্টা করতে পারেন: /\s+123456\s+/i

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