/ / पाठ को दोबारा सुधारने के लिए regex का उपयोग - रूबी, regex

पाठ को दोबारा सुधारने के लिए regex का उपयोग - रूबी, regex

स्ट्रिंग को दोबारा सुधारने के लिए रेगेक्स का उपयोग करने का कोई तरीका है?

मैं इस तरह एक स्ट्रिंग है AEY4293 और मैं इस तरह के अक्षरों और संख्याओं के बीच एक डैश जोड़ना चाहता हूं AEY-4293.

मैं कुछ ऐसा खोजने की कोशिश कर रहा था s/pattern/replacement/, लेकिन मैं इसे नहीं ढूंढ सका।

मैं उपयोग कर ब्लॉक का चयन कर सकते हैं /(w+)(d+)/ तो अगर मैं पाठ को दोबारा सुधारने के लिए एक पैटर्न दे सकता हूं 1-2 यह बहुत अच्छा होगा।

धन्यवाद!

उत्तर:

जवाब के लिए 2 № 1
irb(main):001:0> "AEY4293".sub(/(D+)(d+)/, "1-2")
=> "AEY-4293"

जवाब के लिए 2 № 2
"AEY4293".sub(/(?<=w)(?=d)/, "-")

आप भी कर सकते हैं

"AEY4293".sub(/(?=d)/, "-")

जो एमयू के करीब आता है वह बहुत छोटा जवाब है।


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

रेगेक्स होगा:

/([A-Z]+)(d+)/

प्रतिस्थापन पैटर्न होगा:

1-2

अभिव्यक्ति के साथ एक समस्या है /(w+)(d+)/, इसलिये w अल्फा और संख्या दोनों से मेल खाता है। तो, इनपुट के साथ AEY4293, w+ मैच होगा AEY429 तथा d+ पिछला मैच होगा 3.


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

यदि गैर-न्यूमेरिक उपसर्ग हमेशा तीन वर्ण होता है तो आप इसे नियमित अभिव्यक्ति के बिना कर सकते हैं:

s = "AEY4293"
s[3,0] = "-"
# s is now "AEY-4293"

या, यदि आप उपसर्ग आकार पर थोड़ा अधिक लचीलापन चाहते हैं, तो आप इसका उपयोग कर सकते हैं index उपरोक्त के साथ संयुक्त:

s[s.index(/d/), 0] = "-"

मुझे इसके लिए ब्रैकेट-असाइनमेंट नोटेशन पसंद है क्योंकि यह आपके इरादे से अच्छी तरह से मेल खाता है।


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

वहां एक है str.sub(pattern, replacement) उस के लिए विधि। प्रतिस्थापन के साथ एक स्टिंग है 1 और संदर्भों पर भी।