Сопоставление Scala RegEx не удается, Java успешно завершена
В следующем коде тот же шаблон соответствует при использовании Java API, но не при использовании сопоставления с шаблоном Scala.
import java.util.regex.Pattern
object Main extends App {
val text = "/oAuth.html?state=abcde&code=hfjksdhfrufhjjfkdjfkds"
val statePatternString = """\/.*\?.*state=([^&\?]*)"""
val statePattern = statePatternString.r
val statePatternJ = Pattern.compile(statePatternString)
val sj = statePatternJ.matcher(text)
val sjMatch = if (sj.find()) sj.group(1) else ""
println(s"Java match $sjMatch")
val ss = statePattern.unapplySeq(text)
println(s"Scala unapplySeq $ss")
val sm = statePattern.findFirstIn(text)
println(s"Scala findFirstIn $sm")
text match {
case statePattern(s) =>
println(s"Scala matching $s")
case _ =>
println("Scala not matching")
}
}
Выходные данные приложения:
Java соответствует abcde
Скала неприменимаСек Нет
Scala findFirstIn Some (/oAuth.html?state=abcde)
Скала не соответствует
Что приводит к сбою регулярного выражения Scala unapplySeq?