¿Cómo crear una expresión regular sin procesar en Scala?
Frecuentes
Visto 188 veces
0
Digamos que tengo una cadena que tiene caracteres, pero no lo sé hasta el tiempo de ejecución.
val s: String = "/+*à&ç"
¿Cómo puedo convertir esta cadena en una expresión regular para que se escapen todos los caracteres especiales?
Por ahora, intentar esto falla:
s.r.findFirstIn("What the /+*à&ç is this PatternSyntaxException?")
con el error:
java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 2
en lugar de devolver el partido.
1 Respuestas
1
Puede haber un método de tipo Scala para eso, pero el siguiente java funciona.
import java.util.regex.Pattern
Pattern.quote(s).r.findFirstIn("What the /+*à&ç is this PatternSyntaxException?")
devoluciones
res1: Option[String] = Some(/+*à&ç)
Respondido el 03 de diciembre de 13 a las 13:12
StringLike
tiene replaceAllLiterally
que cita. Es interesante preguntarse qué método agregar para su caso de uso. s.q
? s.r.quoted
? Claramente no s.findFirstInLiterally
¡etc! - som-snytt
Para mí, necesitaba encontrar todos los lugares en los que se produjo la subcadena. Entonces, si hubiera algo como s.rquote, sería útil. - mikaël mayer
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas regex scala escaping or haz tu propia pregunta.
¿Qué tal el enfoque sugerido por esta respuesta? Es decir
Pattern.quote
or\Q
y\E
. - DavidRRDe hecho, gracias por esta respuesta. - Mikaël Mayer