..
या फ्लिप फ्लॉप पर्ल जो यह AWK से मिला है और * nix में sed से विरासत में मिली है। यह बहुत शक्तिशाली है, लेकिन आपके विशेष उपयोग में यह काफी अस्पष्ट है और विशेष रूप से रूबी में आपके इच्छित तर्क के लिए एक अच्छा विकल्प नहीं है। इसके बजाय का उपयोग करें:
(1..10).each {|x| puts x if (3..5) === x }
कौन सा आउटपुट:
3
4
5
कहा यही कारण है, यह अत्यंत शक्तिशाली है जब आप किसी फ़ाइल से लाइनों की एक श्रृंखला को निकालने के लिए की जरूरत है:
File.foreach('/usr/share/dict/propernames') { |li| puts li if ($. == 5 .. $. == 7) }
कौन सा आउटपुट:
Agatha
Ahmed
Ahmet
पे आरएल वर्तमान में पढ़ने वाली लाइन (AKA $.
) की केवल लाइन संख्याओं का उपयोग करके एक और अधिक terse अभिव्यक्ति की अनुमति देता है लेकिन रूबी इसका समर्थन नहीं करता है।
वहाँ भी नियमित अभिव्यक्ति है, जो पिछले तुलना के रूप में समान व्यवहार उपयोग करने का विकल्प है:
File.foreach('/usr/share/dict/propernames') { |li| puts li if (li[/^Wa/] .. li[/^We/]) }
कौन सा आउटपुट:
Wade
Walt
Walter
Warren
Wayne
Wendell
regex काम वजह से, यह करने के लिए एक जटिल पैटर्न बनाने के लिए संभव है मैचों के आधार पर फ़ाइल से लाइनें पुनर्प्राप्त करें। पहले के रूप में, फिर दूसरा पैटर्न ट्रिगर, लाइनों पर कब्जा कर लिया जाता है। यदि, बाद में फ़ाइल में, एक और पंक्ति पहले पैटर्न को ट्रिगर करती है, तो दूसरे पैटर्न मिलान तक कैप्चरिंग फिर से होती है। यह अद्भुत शक्तिशाली है:
File.foreach('/usr/share/dict/propernames') { |li| puts li if (
li[/^Am/] .. li[/^An/] or
li[/^Wa/] .. li[/^We/]
)
}
कौन सा आउटपुट:
Amanda
Amarth
Amedeo
Ami
Amigo
Amir
Amos
Amy
Anatole
Wade
Walt
Walter
Warren
Wayne
Wendell
या वैकल्पिक रूप से, हमारे अस्पष्ट-कोड बोल दोस्तों के लिए:
File.foreach('/usr/share/dict/propernames') { |li| puts li if (li[/^(?:Am|Wa)/] .. li[/^(?:An|We)/]) }
दस्तावेज को लिंक करें .. –
आपने अपने प्रश्न का उत्तर दिया। 'और x == 5' – MurifoX
तक सत्य होना जारी रखें, लेकिन जब x 5 हो जाए, तो यह गलत है? तब 5 कैसे मुद्रित हो सकता है? – bean