ファイルをスキャンして、の最初のインスタンスの正規表現を見つけて、その式に一致するグループの値を返します。Regexのグループとストリームを組み合わせてファイルを検索する方法
これまでの私の主張は、非常に扱いにくく、正規表現を繰り返し使用するように見えましたが、一度ターゲット文字列を見つけて再びグループを取得しました。私はRegexpの始めと終わりに。*を使うのも好きではありません。
誰でもこれを行うためのよりエレガントな方法を提案できますか?
val DateRegexp = """.*(\d\d\d\d)-(\d\d)-(\d\d).*""".r
val lineWithDate = scala.io.Source.fromFile(filenameGC).getLines().find{_.matches(""".*(\d\d\d\d)-(\d\d)-(\d\d).*""") }
lineWithDate match {
case Some(result) =>
result match {
case DateRegexp(year, month, day) =>
println(year, month, day)
}
case None =>
println("No date found in file")
}
シリルCorpetから大きな入力した後、私は今...
val DateRegexp = """(\d\d\d\d)-(\d\d)-(\d\d)""".r.unanchored
scala.io.Source.fromFile(filenameGC).getLines().collectFirst{
case DateRegexp(y, m, d) => println(y, m, d)}
完璧、多くのありがとうございます。 – BarneyW
ようこそ。私はあなたの質問に答える前に 'unanchored'について知らなかったので、私はこれを発見して嬉しかったです。 –