Scala Pattern Match之Regular Expressions正则表达式
Scala正则表达式,以下是正则表达式的定义和使用,this
scala> val regex="""([0-9]+)([a-z]+)""".r regex: scala.util.matching.Regex = ([0-9]+)([a-z]+) scala> val str = "1618lyx" str: String = 1618lyx scala> val regex(num,name) = str num: String = 1618 name: String = lyx
将匹配的结果赋值给num 和 name。spa
在构造Regex的时候使用到String类的r方法,咱们也能够直接使用Regex类进行:scala
scala> import scala.util.matching._ import scala.util.matching._ scala> scala> val regex = new Regex("""([0-9]+)([a-z]+)""") regex: scala.util.matching.Regex = ([0-9]+)([a-z]+) scala> val regex(num, blog) = str num: String = 1618 blog: String = lyx scala>
下面来看一下正则表达式在模式匹配中的应用,code
//r 方法表示建立一个正则表达式 val BookExtractorRE = """Book:title=([^,]+),\s+author=(.+)""".r val MagazineExtractorRE = """Magazine:title=([^,]+),\s+issue=(.+)""".r val catalog = Seq( "Book:title=Programming Scala Second Edition,author=Dean Wampler", "Magazine:title=The New York,issue=January 2014", "Unknown:text=who put this here?" ) /** * BookExtractorRE 是一个正则表达式,能够将匹配的字符串赋值给title,author * 在case部分就能够取到匹配到的变量 * entry :表示没有匹配的变量 * * 对于大量转义字符及换行的字符串可使用三个双引号 * 三个双引号的字符串能够将换行符输出 */ for (item <- catalog) { item match { case BookExtractorRE(title, author) => println( s"""Book $title, written by $author""") case MagazineExtractorRE(title, issue) => println(s"""Magazine "title" ,issue $issue""") case entry => println(s"Unrecognized entry:$entry") } }
==========END==========blog