Sto cercando di abbinare in un gruppo di opzioni in Scala 2.8 (beta 1) con il seguente codice:Scala: Corrispondenza opzionali gruppi di espressioni regolari
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>
Ma questo non sta funzionando. Qual è il modo corretto per abbinare i gruppi di espressioni regolari facoltative?
Scala usa il metodo Matcher.group in Regex.unapplySeq. Questo specifica che se un gruppo non riesce ad abbinare parte della sequenza, viene restituito null - –
Sarebbe bello se Scala potesse usare una classe Option per un campo regex opzionale piuttosto che richiedere un controllo Null. –