के रूप में पारित करने के लिए एस्केप स्ट्रिंग को मैं एक ऐसा फ़ंक्शन बनाना चाहता हूं जो इनपुट पर दिए गए मनमानी स्ट्रिंग से मेल खाने वाले रेगेक्स को बनाता है। उदाहरण के लिए, जब मैं 123$
के साथ इसे खिलाता हूं तो इसे स्ट्रिंग के अंत में सचमुच "123$"
और 123
से मेल खाना चाहिए।रेगेक्स
def convert(xs: String) = (xs map (x => "\\"+x)).mkString
val text = """ 123 \d+ 567 """
val x = """\d+"""
val p1 = x.r
val p2 = convert(x).r
println(p1.toString)
\d+ // regex to match number
println((p1 findAllIn text).toList)
List(123, 567) // ok, numbers are matched
println(p2.toString)
\\\d\+ // regex to match "backshash d plus"
println((p2 findAllIn text).toList)
List() // nothing matched :(
तो पिछले findAllIn
पाठ में \d+
खोजना चाहिए, लेकिन ऐसा नहीं है। यहाँ क्या गलत है?
आप कोशिश कर रहे हैं अपनी स्क्रिप्ट के भीतर एक regex उत्पन्न करने के लिए? मुझे सवाल का अनिश्चितता है। जावा में आपको किसी अन्य के साथ \ "से बचने की आवश्यकता है व्हाइट्स स्पेस मैच \\ एस। स्कैला भाषा का अनिश्चितता। –
जब '' '' '' '' '' '' '' '' '' + '' '' \ d + '' (synactically) '' text'' में क्यों होना चाहिए? –
@ एमएचएस: अप्स, टाइपो। लेकिन यह अभी भी काम नहीं करता है। –