scala知识点(二)

1.正则表达式:

与正则表达式相关的类是scala.util.matching.Regex类,要构造一个Regex对象,使用String类的r方法即可,如果正则表达式中包含反斜杠或引号之类的需要转义的字符,那么最好是使用原始(raw)字符串,以三个”号包围

val apacheLogRegex =
      """^([\d.]+) (\S+) (\S+) \[([\w\d:/]+\s[+\-]\d{4})\] "(.+?)" (\d{3}) ([\d\-]+) "([^"]+)" "([^"]+)".*""".r
def extractKey(line: String): (String, String, String) = {
      apacheLogRegex.findFirstIn(line) match {
        case Some(apacheLogRegex(ip, _, user, dateTime, query, status, bytes, referer, ua)) =>
          if (user != "\"-\"") (ip, user, query)
          else (null, null, null)
        case _ => (null, null, null)
      }
    }

apacheLogRegex.findFirstIn(line)    // 在line中找到首个匹配apacheLogRegex的匹配项

findPrefixOf()方法检查某个字符串的开始部分是否能够匹配。

参考来源

时间: 2024-08-11 05:31:53

scala知识点(二)的相关文章

Scala知识点总结(上半部分)

深度解析Scala -----------语法精细篇 1.安装Scala: 1.将安装包解压 2.配置环境变量 E:\program\scala-2.11.8 系统变量中配置:变量名:SCAL_HOME 变量值:E:\program\scala-2.11.8 确定 编辑环境变量中:新建 ==>%SCALA_HOME%/bin===>确定 注意:如果在配置完了Scala,需要从新打开cmd.exe 2.配置IDEA 2.1点击Configure--->Plugins----->Ins

Scala学习(二)--- 控制结构和函数

控制结构和函数 摘要: 本篇主要学习在Scala中使用条件表达式.循环和函数,你会看到Scala和其他编程语言之间一个根本性的差异.在Java或C++中,我们把表达式(比如3+4)和语句(比如if语句)看做两样不同的东西.表达式有值,而语句执行动作.在Scala中,几乎所有构造出来的语法结构都有值.这个特性使得程序更加精简,也更易读.本篇的要点包括: 1. 表达式有值 2. 块也有值,是它最后一个表达式的值 3. Scala的for循环就像是"增强版"的Java for循环 4. 分号

MySQL:表的操作 知识点难点总结:表完整性约束及其他常用知识点二次总结🙄

表操作 一 : 修改表表表表表表表表表: ALTER TABLE 语法 1. 改表名rename alter table 表名 rename 新表名 2. 增加字段add alter table 表名 add 字段名 数据类型 (完整性约束条件) add 字段名 数据类型(完整性约束条件) 3. 删除字段 drop alter table 表名 drop 字段名; 4. 修改字段 modify 字段名 数据类型 (完整约束条件); change 旧字段名 新字段名 旧数据类型 (完整性约束条件)

Java 8 vs. Scala(二):Stream vs. Collection

[编者按]在之前文章中,我们介绍了 Java 8和Scala的Lambda表达式对比.在本文,将进行 Hussachai Puripunpinyo Java 和 Scala 对比三部曲的第二部分,主要关注 Stream 和 Collection,本文由 OneAPM 工程师编译整理. 首先,为大家做一个简短的介绍,collection 是有限的数据集,而 stream 是数据的序列集,可以是有限的或无限的. Streams API 是 Java 8 中新发布的 API,主要用于操作 collec

从零学scala(二)数组相关操作、映射和元组

一:数组相关操作 定长数组 val array = Array[String]("a","b","c") //直接初始化数组的内容        println(array.mkString("|")) val array = new Array[String](2) //new一个长度为2的数据在通过更新的方法进行赋值        array.update(0, "0")        array.up

Scala实验二——2.模拟图形绘制

题目: 对于一个图形绘制程序,用下面的层次对各种实体进行抽象.定义一个 Drawable 的特 质,其包括一个 draw 方法,默认实现为输出对象的字符串表示.定义一个 Point 类表示点, 其混入了 Drawable 特质,并包含一个 shift 方法,用于移动点.所有图形实体的抽象类为 Shape,其构造函数包括一个 Point 类型,表示图形的具体位置(具体意义对不同的具体图 形不一样).Shape 类有一个具体方法 moveTo 和一个抽象方法 zoom,其中 moveTo 将图形从

Scala知识点

1)将Array转化为String,toStrings()方法应该是序列化了的. scala> val args = Array("Hello", "world", "it's", "me") args: Array[java.lang.String] = Array(Hello, world, it's, me) scala> val string = args.mkString(" ") s

知识点--------二维数组

1.二维数组 模型:表格 定义:数据类型 [,] 数组名= new 数据类型[行数,列数]; int [,] a=new int[行数,列数]; 赋值: a[行下标,列下标]=10;   下标从0开始 取值: a[行下标,列下标] 2.数组的数组(锯齿数组) 定义: int [][] a=new int [行数][]; 赋值: 大数组里头放小数组 定义大数组 int [][]a=new int [行数][]; 定义小数组 int []a1=new int [列数]; int []a2=new i

Scala学习(二)练习

Scala控制结构和函数&练习 1. 一个数字如果为正数,则它的signum为1:如果是负数,则signum为-1:如果为0,则signum为0:编写一个函数来计算这个值 简单逻辑判断: 测试结果如下: Scala中已经有此方法了,如下: println(BigInt(10).signum) 测试结果如下: 2. 一个空的快表达式{}的值是什么,类型是什么 在REPL中测试如下: 由此可以看出,它的值是()类型是Unit 3. 在Scala中何种情况下赋值语句x=y=1是合法的.(提示:给x找个