简体   繁体   English

Scala正则表达式模式匹配不起作用

[英]Scala regex pattern matching doesn't work

val login = "login user=(.*), token=(.*)".r

"login user=SapHana_dummy token=dummy" match {
  case login(user, token) =>
    println("success")
}

This code always throws MatchError. 此代码始终引发MatchError。 Instead of printing "success" as intended. 而不是按预期方式打印“成功”。 Why? 为什么?

Because your pattern expects a comma, here: 因为您的模式需要逗号,所以在这里:

login user=(.*), token=(.*)
               ^

Which is not in the input text. 输入文本中没有哪个。

Also, to minimize backtracking, I'd use an ungreedy quantifier here: 另外,为了最大程度地减少回溯,我将在此处使用不贪婪的量词:

login user=(.*?) token=(.*)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM