2016-10-11 20 views
1

私は次の文字列を持っています:1-10 employeesスカラー正規表現複数の整数

は、ここに私の正規表現の文val regex = ("\\d+").r

私はImが一致するデータを抽出し、大きいどの返された値を決定するための方法を見つけようとしている必要があり問題です。ここで

は、私は私があなたの元の質問で混乱していたと思ったものをIMはそれを

def setMinAndMaxValue(currentCompany: CurrentCompany, matchIterator: Iterator[Regex.Match]): CurrentCompany = { 
    var max = 0 
    println(s"matchIterator - $matchIterator") 
    matchIterator.collect { 
     case regex(s: String) => println("found string") 
     case regex(IntConv(x)) => 
     println("regex case") 
     if (x > max) max = x 
    } 
    val (minVal, maxVal) = rangesForMaxValue(max) 
    val newDetails = currentCompany.details.copy(minSize = Some(minVal), maxSize = Some(maxVal)) 
    currentCompany.copy(details = newDetails) 
    } 

object IntConv { 
    def unapply(s : String) : Option[Int] = Try { 
    Some(s.toInt) 
    }.toOption.flatten 
} 
+0

あなたの正規表現は間違っています(最初の括弧は引用符の外にあります)。何を試しましたか?あなたはscaladoc http://www.scala-lang.org/api/current/#scala.util.matching.Regexを見ましたか?この例では、データを抽出する方法を示しています。 –

+1

@TheArchetypalPaul私は謝罪します。私がデータをどのように処理しているのかを含まないのは私の犯罪者です。イテレータの型はRegex.Matchですから、実際には型が必要です。同じ。 – TheM00s3

+0

あなたの実際の問題が今何か分かりません。何があなたのために働いていないのですか? –

答えて

2

を処理するためにやっている、あなたはコードでそれを明らかにし、今私はあなたが何をしようとして見当がつかない。

文字列から数値を抽出するには、これを試してください。

val re = """(\d+)""".r 
val nums = re.findAllIn(string_with_numbers).map(_.toInt).toList 

次に、あなたができるだけnums.min、およびnums.max、そしてどんな数処理に必要。