Estoy tratando de igualar en un grupo de opciones en Scala 2.8 (beta 1) con el siguiente código:Scala: Coincidencia de los grupos de expresiones regulares opcionales
import scala.xml._
val StatementPattern = """([\w\.]+)\s*:\s*([+-])?(\d+)""".r
def buildProperty(input: String): Node = input match {
case StatementPattern(name, value) => <propertyWithoutSign />
case StatementPattern(name, sign, value) => <propertyWithSign />
}
val withSign = "property.name: +10"
val withoutSign = "property.name: 10"
buildProperty(withSign) // <propertyWithSign></propertyWithSign>
buildProperty(withoutSign) // <propertyWithSign></propertyWithSign>
Pero esto no está funcionando. ¿Cuál es la forma correcta de unir grupos regex opcionales?
Scala usa el método Matcher.group en Regex.unapplySeq. Esto especifica que si un grupo no puede coincidir con parte de la secuencia, se devuelve null - –
Sería bueno si Scala pudiera usar una clase Option para un campo regex opcional en lugar de requerir una verificación nula. –