2017-08-07 10 views
0
val file_name="D:/folder1/folder2/filename.ext" //filename 
val reg_ex = """(.*?).(\\\\w*$)""".r //regex pattern 

file_name match { 
     case reg_ex(one , two) =>s"$two is extension" 
     case _ => println(" file_reg_ex none") 
    } 

scalight regexを使用して上記のファイル拡張子「ext」を抽出する場合は、一致文字「&」を使用します。scala regex:ファイルの拡張子を抽出する

私は上記の正規表現を使用しており、大文字と小文字は区別されません。

正規表現のチュートリアルへのポインタは参考になります。

+0

何を試しましたか?あなたはどこにいるのですか?うまくいかないコードを投稿し、トラックから外れるところを指摘することができます。 – jwvh

+0

@jwvhコードを更新しました。 – codehunter

答えて

2

少数の微調整。

val reg_ex = """.*\.(\w+)""".r 

file_name match { 
    case reg_ex(ext) =>s"$ext is extension" 
    case _ => println("file_reg_ex none"); "" 
} 

キャプチャグループは1つだけ必要です。最後のドットの前のすべてを無視して、\.(エスケープされているので、ドットで「任意の文字」ではない)残りをキャプチャします。

デフォルトのcase _は、printlnより大きくする必要があります。それはマッチと同じ型を返さなければなりません。

+0

が機能していることを確認してください!おそらくスカラに固有の正規表現のチュートリアルを教えてもらえますか?それは素晴らしいでしょう。 – codehunter

+1

1 - 私が手伝ってくれてうれしい。 2 - ここでの感謝の適切な表現は、上の投票であり、そして/または答えを「受け入れられた」とマークする。 3 - 私は多くの上級正規表現のチュートリアルがオンラインであると確信しています。私は最近何も使用していないので、私には何の推薦もありません。 – jwvh

+1

+1に 'case _'を答えてください。 Scala regexはjava正規表現ですが、http://www.scala-lang.org/api/current/scala/util/matching/Regex.htmlに例があります。ファイルパスを解析するためには、正規表現ではなく、実際にはlibが必要です。いくつかのライブラリがあります。 –

関連する問題