/ रूबी में एक ही अंक के समूहों को पकड़ने के लिए रेगेक्स - माणिक, रेगेक्स, संख्या, अंक

रूबी - रूबी, रेगेक्स, संख्याओं, अंकों में एक ही अंक के समूहों को पकड़ने के लिए रेगेक्स

क्या रूबी पर रेगेक्स के साथ स्ट्रिंग में एक ही अंक के सभी जंभाई को पकड़ना संभव है? मैं रेगेक्स से परिचित नहीं हूं।

मेरा मतलब है: regex on "1112234444" उत्पादन करेंगे ["111", "22", "3", "4444"]

मुझे पता है, मैं उपयोग कर सकते हैं (d)(1*), लेकिन यह केवल मुझे प्रत्येक मैच में 2 समूह देता है। ["1", "11"], ["2", "2"], ["3", -], ["4", "444"]

मैं प्रत्येक मैच में 1 समूह कैसे प्राप्त कर सकता हूं? धन्यवाद।

उत्तर:

जवाब के लिए 8 № 1

यहाँ, यह एक शॉट दे:

((d)2*)

जवाब के लिए 5 № 2

आप इस रेगेक्स का उपयोग कर सकते हैं

((d)2*)

समूह 1 आपके आवश्यक मूल्य को पकड़ता है


उत्तर № 3 के लिए 1

कोड के लिए कोई स्पष्टीकरण नहीं होने के लिए मेरे पहले त्वरित उत्तर की सही आलोचना की गई थी। तो यहाँ एक और एक है, सभी मामलों में बेहतर ;-)

हम इस तथ्य का शोषण करते हैं कि तत्व किसके चलते हैंहम चाहते हैं कि वे अंक हैं और वे हाथ से गणना करना आसान है। तो हम एक पठनीय रेगेक्स का निर्माण करते हैं, जिसका अर्थ है "शून्य का एक भाग, या लोगों का एक भाग, ... या एक रन ऑफ नाइन"। और हम नौकरी के लिए सही तरीके का उपयोग करते हैं, स्ट्रिंग # स्कैन:

irb> "1112234444".scan(/0+|1+|2+|3+|4+|5+|6+|7+|8+|9+/)
=> ["111", "22", "3", "4444"]

रिकॉर्ड के लिए, यहाँ मेरा मूल उत्तर है:

irb> s = "1112234444"
=> "1112234444"
irb> rx = /(0+|1+|2+|3+|4+|5+|6+|7+|8+|9+)/
=> /(0+|1+|2+|3+|4+|5+|6+|7+|8+|9+)/
irb> s.split(rx).reject(&:empty?)
=> ["111", "22", "3", "4444"]