रूबी 1.9.2 का उपयोग करना, मैं आईआरबी में निम्नलिखित रूबी कोड है:मैं इन दो लगभग समान रूबी रेगेक्स पैटर्न के लिए अलग-अलग परिणाम क्यों देख रहा हूं, और मुझे ऐसा लगता है कि मुझे क्या लगता है कि यह नहीं होना चाहिए?
> r1 = /^(?=.*[\d])(?=.*[\W]).{8,20}$/i
> r2 = /^(?=.*\d)(?=.*\W).{8,20}$/i
> a = ["password", "1password", "password1", "pass1word", "password 1"]
> a.each {|p| puts "r1: #{r1.match(p) ? "+" : "-"} \"#{p}\"".ljust(25) + "r2: #{r2.match(p) ? "+" : "-"} \"#{p}\""}
यह निम्न उत्पादन में परिणाम है:
r1: - "password" r2: - "password"
r1: + "1password" r2: - "1password"
r1: + "password1" r2: - "password1"
r1: + "pass1word" r2: - "pass1word"
r1: + "password 1" r2: + "password 1"
1.) क्यों परिणाम भिन्न हैं?
2.) r1
स्ट्रिंग्स 2, 3 और 4 पर मैच क्यों होगा? (?=.*[\W])
लुकहेड का कारण यह विफल नहीं होगा क्योंकि उन उदाहरणों में कोई गैर-शब्द वर्ण नहीं हैं?
क्या आप कृपया '/^(? =। * [\ D]) (? =। * ([\ W]) से मिलान करने का प्रयास कर सकते हैं। {8,20} $/i' और कैप्चर किए गए उपयोग को बताएं समूह '1' कैप्चरिंग में? (मुझे डर है कि यह अंक है, लेकिन आप कभी नहीं जानते) –
रूबी 1.9.3-पी 327: आर 1: - "पासवर्ड" आर 2: - "पासवर्ड" आर 1: - "1 पासवर्ड" आर 2: - "1 पासवर्ड" आर 1: - "पासवर्ड 1" आर 2: - "पासवर्ड 1" आर 1: - "पास 1वर्ड" आर 2: - "पास 1वर्ड" आर 1: + "पासवर्ड 1" आर 2: + "पासवर्ड 1" => ["पासवर्ड", "1 पासवर्ड "," पासवर्ड 1 "," पास 1वर्ड "," पासवर्ड 1 "] ऐसा लगता है कि आपको 1.9.2 के साथ एक बग मिल सकती है? –
क्या आप इसे अपने प्रश्न में शामिल कर सकते हैं (उचित स्वरूपण के लिए) –