在Scala中你只須要在正則表達式字符串後邊加上一個".r"就能夠使用正則表達式了。es6
scala> val numPattern = "[0-9]+".r numPattern: scala.util.matching.Regex = [0-9]+
下面介紹正則表達式經常使用的兩個匹配方法findFirstIn和findAllIn。正則表達式
方法findFirstIn能夠匹配到第一個符合正則表達式規則的字符串,沒有匹配到任何結果的狀況下返回None。ui
scala> val address = "123 Main Street Suite 101" address: String = 123 Main Street Suite 101 scala> numPattern.findFirstIn(address) res4: Option[String] = Some(123) scala> numPattern.findFirstIn("abc") res5: Option[String] = None
方法findAllIn能夠匹配到全部符合正則表達式規則的字符串,返回的結果是一個Iterator。你能夠把它轉化爲一個Array來使用。若是沒有匹配到任何符合規則的字符換那麼,它將返回一個空Iterator。es5
scala> val matchs = numPattern.findAllIn(address) matchs: scala.util.matching.Regex.MatchIterator = non-empty iterator scala> matchs.getClass() res6: Class[_ <: scala.util.matching.Regex.MatchIterator] = class scala.util.matching.Regex$MatchIterator scala> matchs.toArray.foreach(println(_)) 123 101 scala> val matchs = numPattern.findAllIn("abc") matchs: scala.util.matching.Regex.MatchIterator = empty iterator
接下來看看如何使用正則表達式來替換字符串。scala
咱們能夠調用字符串的replaceAll方法來進行字符換替換,這個方法接收兩個參數,第一個是正則表達,第二個是要被替換成的字符串。code
scala> "123 Main Street".replaceAll("[0-9]", "x") res13: String = xxx Main Street
還有一種方式是,提早編譯好一個正則表達式,而後調用正則表達式的replaceAllIn方法來進行替換。字符串
scala> regex.replaceAllIn("123 Main Street", "x") res15: String = xxx Main Street
若是你只想替換第一次出現的位置的字符換,而不是全部匹配的位置,那麼你能夠使用字符串的replaceFirst或者正則表達式的replaceFirstIn方法。get
scala> "123".replaceFirst("[0-9]", "x") res16: String = x23 scala> "[0-9]".r.replaceFirstIn("123","x") res20: String = x23
而後咱們繼續討論如何使用正則表達式來拆分字符串。it
看一看如何使用正則表達式把"100 Bananas"拆分爲100何Bananas兩部分。io
scala> val pattern = "([0-9]+) ([a-zA-Z]+)".r pattern: scala.util.matching.Regex = ([0-9]+) ([a-zA-Z]+) scala> val pattern(count, fruit) = "100 Bananas" count: String = 100 fruit: String = Bananas