Scala でのちょっと面倒な正規表現の記述


最近,Scala を始めました.で,ちょっと面倒くさい正規表現を書いていたのですが,ここでは話を簡単にして,自然数,自然数,引用符で囲まれた文字列という三つ組の正規表現を書くこととしますね.(実際には,6種類の部分正規表現が10個くらい連なっているものを扱っています.)

同じ正規表現の定義をするにしても,素朴に以下のように書いたり,

val pattern = """(d+),(d+),'((?:[^']|\')*)'""".r

基本的な正規表現のパターン(N と S)を定義したものをフォーマットしたり,

val N = """(d+)"""
val S = """'((?:[^']|\')*)'"""
val pattern = ("%s,%s,%s" format (N, N, S)).r

それでは,フォーマットの形式と部分正規表現の数を整合させるのが面倒だから,リストから構成してみたり

val pattern = Seq(N,N,S).mkString(",").r

とか,やってたのだけど,こんなことまでできるんだね.まるでシェルスクリプトみたい.

val pattern = s"$N,$N,$S".r

Scala恐るべし.

Scala でのちょっと面倒な正規表現の記述」への1件のフィードバック

  1. このブログを長らく放置してたのだけど,久しぶりに WordPress の設定を眺めてたら,いつのまにか Markdown 形式での記事の記述ができるようになっていました.ということでちょこっと使ってみました.すばらしい!

コメントは受け付けていません。