在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Scala/ Scala正則表達式
Scala方法重載
Scala模式匹配
Scala throw關(guān)鍵字
Scala提取器
Scala概述
Scala throws關(guān)鍵字
Scala finally塊
Scala正則表達式
Scala循環(huán)語句
Scala多線程
Scala函數(shù)
Scala final關(guān)鍵字
Scala方法覆蓋
Scala字符串
Scala線程實現(xiàn)
Scala異常處理
Scala類和對象
Scala數(shù)據(jù)類型
Scala單例和伴生對象
Scala構(gòu)造函數(shù)
Scala教程
Scala Case類和對象
Scala繼承
Scala開發(fā)環(huán)境安裝配置
Scala運算符
Scala文件I/O
Scala線程方法
Scala變量
Scala try-catch語句
Scala基礎(chǔ)語法
Scala集合
Scala數(shù)組
Scala閉包
Scala訪問修辭符
Scala this關(guān)鍵字

Scala正則表達式

本章介紹了Scala如何通過在scala.util.matching包中提供的Regex類支持和實現(xiàn)正則表達式。

嘗試以下示例程序,將嘗試從語句中查找單詞:Scala。

示例

import scala.util.matching.Regex

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

      println(pattern findFirstIn str)
   }
}

將上述程序保存在源文件:Demo.scala中,使用以下命令編譯和執(zhí)行此程序。

D:\>scalac Demo.scala
D:\>scala Demo
Some(Scala)

我們創(chuàng)建一個String并在其上調(diào)用r()方法。 Scala會將String轉(zhuǎn)換為RichString,并調(diào)用該方法獲取Regex實例。 要找到正則表達式的第一個匹配項,只需調(diào)用findFirstIn()方法即可。如果希望找到匹配詞的所有出現(xiàn),可以使用findAllIn()方法,如果目標字符串中有多個Scala字符,則將返回所有匹配的字符串的集合。

可以使用mkString()方法來連接結(jié)果列表,可以使用管道(|)來搜索大小寫的字符串:Scala,可以使用Regex構(gòu)造函數(shù)或r()方法來創(chuàng)建模式。

嘗試以下示例程序 -

import scala.util.matching.Regex

object Demo {
   def main(args: Array[String]) {
      val pattern = new Regex("(S|s)cala")
      val str = "Scala is scalable and cool"

      println((pattern findAllIn str).mkString(","))
   }
}

將上述程序保存在源文件:Demo.scala中,使用以下命令編譯和執(zhí)行此程序。

D:\>scalac Demo.scala
D:\>scala Demo
Scala,scala

如果要替換匹配的文本,可以使用replaceFirstIn()替換第一個匹配或replaceAllIn()來替換所有出現(xiàn)的值。

示例

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

      println(pattern replaceFirstIn(str, "Java"))
   }
}

將上述程序保存在源文件:Demo.scala中,使用以下命令編譯和執(zhí)行此程序。

D:\>scalac Demo.scala
D:\>scala Demo
Java is scalable and cool

形成正則表達式

Scala從Java繼承其正則表達式語法,后者繼承了Perl的大部分功能。可參考Java正則表達式: http://www.yiibai.com/java/java_regular_expressions.html

注意 - 每個反斜杠在上面的字符串中出現(xiàn)兩次。 這是因為在Java和Scala中,單個反斜杠是字符串文字中的轉(zhuǎn)義字符,而不是字符串中顯示的常規(guī)字符。 所以,反斜杠不是'\',需要寫'\\'來獲取字符串中的單個反斜杠。

嘗試以下示例程序 -

import scala.util.matching.Regex

object Demo {
   def main(args: Array[String]) {
      val pattern = new Regex("abl[ae]\\d+")
      val str = "ablaw is able1 and cool"

      println((pattern findAllIn str).mkString(","))
   }
}

將上述程序保存在源文件:Demo.scala中,使用以下命令編譯和執(zhí)行此程序。

D:\>scalac Demo.scala
D:\>scala Demo
able1