सवाल एक स्ट्रिंग के सटीक मिलान के लिए नियमित अभिव्यक्ति


मैं नियमित अभिव्यक्ति के साथ दो पासवर्ड मिलान करना चाहता हूं। उदाहरण के लिए मेरे पास दो इनपुट "123456" और "1234567" हैं, तो परिणाम मिलान (झूठा) नहीं होना चाहिए। और जब मैंने "123456" और "123456" दर्ज किया है तो परिणाम मिलान (सत्य) होना चाहिए।

मैं अभिव्यक्ति नहीं कर सका। क्या कोई मेरी मदद कर सकता है।


83
2018-04-22 06:24


मूल


आप इस मामले में रेगेक्स क्यों चाहते हैं? (सटीक) समानता के लिए जांच वास्तव में regex के बिना किया जाना चाहिए। - Bart Kiers
क्योंकि हम बैश स्क्रिप्ट में पाठ को प्रतिस्थापित करने के तरीके को देखते हैं और एक उत्तर प्राप्त करते हैं जिसमें पर्ल और रेगेक्स शामिल होते हैं। - sudo
एक ही समस्या होने के साथ एक बेहतर समाधान ^ (123456) आपको जो परिणाम चाहिए वो देगा - sdx11


जवाब:


यदि आपके पास एक चर में इनपुट पासवर्ड है और आप वास्तव में 123456 से मेल खाना चाहते हैं तो एंकर आपकी मदद करेंगे:

/^123456$/

perl में पासवर्ड मिलान करने के लिए परीक्षण कुछ ऐसा होगा

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

संपादित करें:

बार्ट कियर्स ठीक है, आप इसके लिए strcmp () का उपयोग क्यों नहीं करते? हर भाषा में यह अपने तरीके से है

एक दूसरे विचार के रूप में, आप एक सुरक्षित प्रमाणीकरण तंत्र पर विचार करना चाह सकते हैं :)


112
2018-04-22 06:29



एफवाईआई: मेरे लिए केवल नीचे दिए गए परीक्षक में ^ 123456 $ काम करता है। - Tilo
एंकरों के लिए धन्यवाद, मुझे पता था कि लेकिन इसके बारे में पूरी तरह से नहीं सोचा :) - vikingsteve


Malfaux के जवाब में '^' तथा '$' पाठ की शुरुआत और अंत का पता लगाने के लिए इस्तेमाल किया गया है।
इन्हें आमतौर पर शुरुआत और रेखा के अंत का पता लगाने के लिए उपयोग किया जाता है।
हालांकि यह इस मामले में सही तरीका हो सकता है।
लेकिन यदि आप एक सटीक शब्द से मेल खाना चाहते हैं तो अधिक सुरुचिपूर्ण तरीका उपयोग करना है '\ बी'। इस मामले में निम्नलिखित पैटर्न सटीक वाक्यांश '123456 'से मेल खाता है।

/ \ B123456 \ बी /


86
2017-10-25 09:41



क्या आप वाकई इस तरह से काम करते हैं? ;) कृपया एक रेगेक्स परीक्षक का उपयोग करें इस। "शो मैच" बटन का उपयोग करें और आप देखेंगे कि यह क्यों मेल खाता है। बीटीडब्ल्यू याद रखें '।' एक विशेष चार है और इसे बचने के लिए अच्छा है। (और मतदान से पहले दो बार सोचने के लिए अच्छा: डी)। - prageeth
आपने मेरे संपादन को ओवरराइड किया है और यदि लोग यूआरआई या पासवर्ड (बाद वाला ओपी का विषय था) के खिलाफ सटीक मिलान करने की कोशिश कर रहे हैं, तो लोगों को अपने कार्यक्रमों में बग पेश करने का मौका मिल सकता है, जिसमें अक्सर गैर-शब्द वर्ण होते हैं। मैंने इस बग को उत्पादन कोड में देखा है - यह अच्छा नहीं है। यदि आप मुझे अपने उत्तर को स्पष्ट करने की अनुमति नहीं देंगे, तो कृपया स्वयं ऐसा करें। - 0x1mason
अगर आपको लगता है कि मेरा जवाब भ्रामक या गलत है, तो भी आप अपना उत्तर पोस्ट कर सकते हैं (जैसा कि अन्य लोग करते हैं) या मेरे सुझाव के बारे में मेरी पोस्ट के तहत एक टिप्पणी दें। - prageeth
आपका जवाब भ्रामक है और कई लोगों को गंभीर समस्याएं पैदा होगी। उदाहरण के लिए, अपने दृष्टिकोण का उपयोग \ bhttp: //www.foo.com \ b मिल जाएगा http://www.bar.com/?http://www.foo.com, ओपी में अनुरोध के अनुसार, जो निश्चित रूप से सटीक मिलान नहीं है। यह यूआरएल या पासवर्ड के साथ काम करने वाले लोगों के लिए गंभीर समस्याएं पैदा करेगा (जो, ओपी ने अनुरोध किया है) जिसमें गैर-शब्द वर्ण शामिल हैं। आपको अपने उत्तर को स्पष्ट करना चाहिए ताकि दूसरों को भटकने का नेतृत्व न हो। - 0x1mason
आपको समझा देना होगा। '।' एक लाल हेरिंग है। \ bhttp: // www \ .foo \ .com \ b अभी भी एक मैच का उत्पादन करता है http://www.bar.com/?http://www.foo.com। यह वही नहीं है जो ओपी चाहता है। - 0x1mason


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

यह सुनिश्चित करता है कि आपका मिलान कुछ चरित्र, संख्या, या अंडरस्कोर से पहले नहीं है और तुरंत चरित्र या संख्या, या अंडरस्कोर द्वारा पीछा नहीं किया जाता है

तो यह "एबीसी", "एबीसी", "एबीसी" में "एबीसी" से मेल खाता है, लेकिन "4 एबीसी" नहीं, न ही "abcde"


22
2018-04-16 19:01



प्रश्न का शीर्षक भ्रामक है; वह दो सुनिश्चित करने की कोशिश कर रहा है पूरे तार बिल्कुल वही हैं। इसके अलावा, \w अंकों के साथ-साथ अक्षरों से मेल खाता है, इसलिए [\w\d] अनावश्यक है - Alan Moore
वास्तव में मुझे क्या चाहिए, बहुत धन्यवाद। - user2508615


समानता की जांच करना एक और सीधा आगे है

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

हालांकि, अगर आप वास्तव में नियमित अभिव्यक्ति के साथ रहना चाहते हैं,

string1 =~ /^123456$/

4
2018-04-22 06:33



@ कुरमी मैं जावा कोड बनाने की कोशिश कर रहा हूं जो txt फ़ाइल में विशिष्ट शब्द की खोज करता है और मैं regx का उपयोग करना चाहता हूं, इसलिए मैं उस पैटर्न / ^ myword $ / String.match (/ ^ myword $ /) के साथ खोजने के लिए उपयोग कर सकता हूं उस txt में शब्द? - Antwan


आप कीवर्ड की शुरुआत और अंत में एक स्थान जोड़ने का भी प्रयास कर सकते हैं: /\s+123456\s+/i


2
2017-11-07 11:36



मैं इस विधि को काम करने के लिए काम करने में सक्षम नहीं था \s के जरिए: regex101.com - twknab