क्या रूबी रेगुलर एक्सप्रेशन का पर्ल में "~!" जैसा मैच ऑपरेटर नहीं है?


92

मैं सिर्फ यह जानना चाहता हूं कि क्या पर्पल की तरह माणिक रेगेक्स का मैच ऑपरेटर नहीं है !~। मुझे लगता है कि इसका उपयोग करना असुविधाजनक है (?!xxx)या (?<!xxxx)क्योंकि आप xxxभाग में रेगेक्स पैटर्न का उपयोग नहीं कर सकते हैं ।


8
आपको बस इतना करना था कि आग लगाकर देख irbलें। शायद एसओ सवाल पोस्ट करने से ज्यादा तेज होता।
मार्क थॉमस

32
लेकिन
गुगली

3
मैंने अटकने, गुगली करने और इस उत्तर को खोजने से पहले थोड़ी देर के लिए प्रयोग किया (जो काम किया।)। प्रश्न पूछने के लिए कभी किसी पर डंप न करें।
जोनाथन नॉर्डक्विस

2
उन्होंने इसे उप-आशावादी रूप से चित्रित किया। मुझे लगता है कि उनके कहने का मतलब था, "याद रखें कि आप आग लगा सकते हैं irbऔर इसे आज़मा सकते हैं। शायद, एसओ सवाल पोस्ट करने की तुलना में तेजी से, यहां तक ​​कि, और सामान्य रूप से चीजों का परीक्षण करने का एक शानदार अवसर।" वैसे भी मैंने इसे कैसे सुना।
user2066657

जवाबों:


156

हां: !~ठीक काम करता है - आपको शायद लगा कि यह नहीं होगा क्योंकि यह प्रलेखन पृष्ठ से गायब हैRegexp । फिर भी, यह काम करता है:

irb(main):001:0> 'x' !~ /x/
=> false
irb(main):002:0> 'x' !~ /y/
=> true

8
!~वस्तु के तहत प्रलेखित है ।
टोनकी डी।

3
रूबी 2.4 के साथ, कुछ हद तक अच्छा सिंटैक्स भी है RegExp#match?, जिसे आप आसानी से नकार सकते हैं। के अनुसार रिलीज नोट्स , यह उससे भी कम आवंटन करता है!~
panmari

6

AFAIK (? Xxx) समर्थित है:

2.1.5 :021 > 'abc1234' =~ /^abc/
 => 0
2.1.5 :022 > 'def1234' =~ /^abc/
 => nil
2.1.5 :023 > 'abc1234' =~ /^(?!abc)/
 => nil
2.1.5 :024 > 'def1234' =~ /^(?!abc)/
 => 0

यह एक निम्न-स्तरीय समाधान है। इस तरह से regexps को बदलना हमेशा आसान नहीं होता है। दूसरी ओर, यह समाधान शीर्ष-स्तरीय प्रोग्रामिंग भाषा पर निर्भर नहीं करता है;)
कॉन्स्टेंटिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.