regulares regular probar expresiones expresion espacio crear blanco alfanumerico regex string scala capturing-group

regex - probar - Grupo de captura de Scala usando expresiones regulares



expresiones regulares html (4)

Aquí hay un ejemplo de cómo puede acceder al group(1) de cada partido:

val string = "one493two483three" val pattern = """two(/d+)three""".r pattern.findAllIn(string).matchData foreach { m => println(m.group(1)) }

Esto imprime "483" ( como se ve en ideone.com ).

La opción lookaround

Dependiendo de la complejidad del patrón, también puede usar soluciones alternativas para que coincidan solo con la parte que desea. Se verá algo como esto:

val string = "one493two483three" val pattern = """(?<=two)/d+(?=three)""".r pattern.findAllIn(string).foreach(println)

Lo anterior también imprime "483" ( como se ve en ideone.com ).

Referencias

Digamos que tengo este código:

val string = "one493two483three" val pattern = """two(/d+)three""".r pattern.findAllIn(string).foreach(println)

Esperaba que findAllIn solo devolviera 483 , pero en su lugar, devolvió two483three . Sé que podría utilizar la unapply para extraer solo esa parte, pero tendría que tener un patrón para toda la cadena, algo así como:

val pattern = """one.*two(/d+)three""".r val pattern(aMatch) = string println(aMatch) // prints 483

¿Hay alguna otra forma de lograr esto, sin usar directamente las clases de java.util y sin usar la aplicación?



def extractFileNameFromHttpFilePathExpression(expr: String) = { //define regex val regex = "http4.*///(//w+.(xlsx|xls|zip))$".r // findFirstMatchIn/findAllMatchIn returns Option[Match] and Match has methods to access capture groups. regex.findFirstMatchIn(expr) match { case Some(i) => i.group(1) case None => "regex_error" } } extractFileNameFromHttpFilePathExpression( "http4://testing.bbmkl.com/document/sth1234.zip")


val string = "one493two483three" val pattern = """.*two(/d+)three.*""".r string match { case pattern(a483) => println(a483) //matched group(1) assigned to variable a483 case _ => // no match }