Scala の Regex で全角半角を無視して match する方法
こんにちは、 @kz_morita です。
今回は、Scala の正規表現まわりで全角半角を無視して match させる方法についてまとます。
基本的な使い方 Scala では、Regex クラスを用います。
https://docs.scala-lang.org/ja/tour/regular-expression-patterns.html https://www.scala-lang.org/api/2.13.4/scala/util/matching/Regex.html 以下に、jpg という拡張子を削除するような正規表現を示します。
import scala.util.matching.Regex val regex = """\.jpg""".r val replace = (str: String) => regex.replaceAllIn(str, "") println(replace("image.jpg")) // => image 一般的な正規表現で全角半角を無視するためには i という修飾子をつけます。 今回の例では /\.jpg//i のような感じです。
Scala の Regex ではこのような修飾子は以下のように正規表現の頭につけます。
val regex = """(?i)\.jpg""".r ためしに、以下のようなコードを実行すると期待した動きになります。
import scala.util.matching.Regex val regex = """(?i)\.jpg""".r val replace = (str: String) => regex.replaceAllIn(str, "") println(replace("image.jpg")) // => image println(replace("image.