私はパターンマッチングと正規表現次ている直接パターンマッチングブロックの正規表現:スカラ:
val url = "/en/about"
val langRegex = "/(.{2}).*".r
val lang = url match {
case langRegex(lang) => lang
case _ => "en"
}
しかし、私は(私は正規表現のための余分な変数を作成したいが、その代わりに入れていない。このような何かを達成したいですそれは直接ブロック)
val url = "/en/about"
val lang = url match {
case "/(.{2}).*".r(lang) => lang
case _ => "en"
}
のマッチングに私は2番目のケースでは、コンパイラエラーを取得していますか?私はlangRegex(lang)と"/(.{2}).*".rを置き換えました。これらの式は等しくなければなりませんか?
なぜこれがエラーですか?
これはできないことです。プリコンパイルされたパターンが必要です。あなたができることは、内部で 'if'を使い、文字列があなたの正規表現と一致すれば何らかの文字列操作を使用するか、より単純なコードを使用することです。 –
または、' 'case s if url ( "/(。{2})。*")=> s.replaceFirst( "/(.1{2}).*"、 "$ 1") '](http://ideone.com/dqlW4z) 。 –