Me gustaría crear una función que cree expresiones regulares que coincidan con una cadena arbitraria dada en la entrada. Por ejemplo, cuando lo publico con 123$
debe coincidir literalmente con "123$"
y no con 123
al final de la cadena.Cadena de escape que se pasará como 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 :(
Así que la última findAllIn
debe encontrar \d+
en el texto, pero no es así. ¿Qué pasa aquí?
¿Estás tratando para generar una expresión regular dentro de tu script? No estoy seguro de la pregunta. En Java, debe escapar \ con otra \ e.g. coincide con el espacio en blanco \\ s. Inseguro del lenguaje scala. –
¿Cómo debería encontrar '' \ d + '' (sintácticamente) en '' text'' cuando este último no contiene un '' + ''? –
@mhs: ups, error tipográfico. Pero todavía no funciona. –