Chciałbym utworzyć funkcję, która tworzy wyrażenie regularne pasujące do dowolnego ciągu podanego na wejściu. Na przykład, gdy karmię go numerem 123$
, powinien on być zgodny z literą "123$"
, a nie 123
na końcu ciągu.Łańcuch ucieczki do przekazania jako regex
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 :(
Więc ostatni findAllIn
powinien znaleźć \d+
w tekście, ale tak nie jest. Co jest nie tak?
Starasz wygenerować wyrażenie regularne w swoim skrypcie? Nie jestem pewien tego pytania. W Javie musisz uciec \ z innym \ np. dopasuj spacje \\ s. Nie jestem pewien języka scala. –
Jak powinien znaleźć '' \ d + '' (syntaktycznie) w '' tekście'', gdy ten ostatni nie zawiera '' + ''? –
@mhs: ups, literówka. Ale nadal nie działa. –