Scala ひと巡り : 正規表現パターン (Regular Expression Patterns)

原ページ

右無視シーケンスパターン

右無視パターンは、Seq[A]のサブ型あるいは、(たとえば下記のような)反復する形式上のパラメータをもつケースクラスなどのデータ分解に役立つフィーチャーです。

Elem(prefix:String, label:String, attrs:MetaData, scp:NamespaceBinding, children:Node*)

これらの場合、Scala は、任意長のシーケンスを表すワイルドカード-星印 _ * を最右端にもつパターンを許しています。

次は、シーケンスの前部とマッチし、残りを変数 restへ束縛する、パターンマッチの例です。

object RegExpTest1 extends Application { def containsScala(x: String): Boolean = { val z: Seq[Char] = x z match { case Seq('s','c','a','l','a', rest @ _*) => println("rest is "+rest) true case Seq(_*) => false } } }

次に述べる理由により、前 Scala バージョンと違い、もう任意の正規表現は使用できません。

Scala から当面の間除かれた一般的な Regexp パターン

正当性の問題が見つかり、このフィーチャーは当面の間 Scala 言語から除かれています。もしユーザーコミュニティーからのリクエストがあれば、私たちはこれを改善した形で復活させるかもしれません。

私達の考えでは、正規表現パターンは私たちが見積もったほどには XML 処理に役立ちませんでした。現実の XML 処理アプリケーションでは、XPath ははるかに良い選択肢に思われます。変換処理あるいは正規表現パターンが、あまり使われずしかも取り除くことが難しい難解なパターンに対していくつかのバ グをもつということを見つけたとき、言語を単純化する時が来たと私達は判断しました。