Scala 正則表達(dá)式

Scala 通過(guò) scala.util.matching 包種的 Regex 類(lèi)來(lái)支持正則表達(dá)式。以下實(shí)例演示了使用正則表達(dá)式查找單詞 Scala :

import scala.util.matching.Regex

object Test {
   def main(args: Array[String]) {
      val pattern = "Scala".r
      val str = "Scala is Scalable and cool"
      
      println(pattern findFirstIn str)
   }
}

執(zhí)行以上代碼,輸出結(jié)果為:

$ scalac Test.scala 
$ scala Test
Some(Scala)

實(shí)例中使用 String 類(lèi)的 r() 方法構(gòu)造了一個(gè)Regex對(duì)象。

然后使用 findFirstIn 方法找到首個(gè)匹配項(xiàng)。

如果需要查看所有的匹配項(xiàng)可以使用 findAllIn 方法。

你可以使用 mkString( ) 方法來(lái)連接正則表達(dá)式匹配結(jié)果的字符串,并可以使用管道(|)來(lái)設(shè)置不同的模式:

import scala.util.matching.Regex

object Test {
   def main(args: Array[String]) {
      val pattern = new Regex("(S|s)cala")  // 首字母可以是大寫(xiě) S 或小寫(xiě) s
      val str = "Scala is scalable and cool"
      
      println((pattern findAllIn str).mkString(","))   // 使用逗號(hào) , 連接返回結(jié)果
   }
}

執(zhí)行以上代碼,輸出結(jié)果為:

$ scalac Test.scala 
$ scala Test
Scala,scala

如果你需要將匹配的文本替換為指定的關(guān)鍵詞,可以使用 replaceFirstIn( ) 方法來(lái)替換第一個(gè)匹配項(xiàng),使用 replaceAllIn( ) 方法替換所有匹配項(xiàng),實(shí)例如下:

object Test {
   def main(args: Array[String]) {
      val pattern = "(S|s)cala".r
      val str = "Scala is scalable and cool"
      
      println(pattern replaceFirstIn(str, "Java"))
   }
}

執(zhí)行以上代碼,輸出結(jié)果為:

$ scalac Test.scala 
$ scala Test
Java is scalable and cool

正則表達(dá)式

Scala 的正則表達(dá)式繼承了 Java 的語(yǔ)法規(guī)則,Java 則大部分使用了 Perl 語(yǔ)言的規(guī)則。

下表我們給出了常用的一些正則表達(dá)式規(guī)則:

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)

    表達(dá)式 匹配規(guī)則
    ^ 匹配輸入字符串開(kāi)始的位置。
    $ 匹配輸入字符串結(jié)尾的位置。
    . 匹配除"\r\n"之外的任何單個(gè)字符。
    [...] 字符集。匹配包含的任一字符。例如,"[abc]"匹配"plain"中的"a"。
    [^...] 反向字符集。匹配未包含的任何字符。例如,"[^abc]"匹配"plain"中"p","l","i","n"。
    \\A 匹配輸入字符串開(kāi)始的位置(無(wú)多行支持)
    \\z 字符串結(jié)尾(類(lèi)似$,但不受處理多行選項(xiàng)的影響)
    \\Z 字符串結(jié)尾或行尾(不受處理多行選項(xiàng)的影響)
    re* 重復(fù)零次或更多次
    re+ 重復(fù)一次或更多次
    re? 重復(fù)零次或一次
    re{ n} 重復(fù)n次
    re{ n,}