Scala 中正则表达式的使用

正则表达式

在scala中,可以很方便地使用正则表达式来匹配数据。

定义

Regex类

  • scala中提供了Regex类来定义正则表达式
  • 要构造一个RegEx对象,直接使用String类的r方法即可
  • 建议使用三个双引号来表示正则表达式,不然就得对正则中的反斜杠来进行转义
  • 使用findAllMatchIn方法可以获取到所有正则匹配到的字符串
val regEx = """正则表达式""".r

代码示例一

object Test01 {
  def main(args: Array[String]): Unit = {
    //定义一个正则表达式,来匹配邮箱是否合法
    val r = """.+@.+\..+""".r
    //合法邮箱
    val eml1 = "qq1234124@163.com"
    //不合法邮箱
    val eml2 = "qq12345@.com"
    //获取到所有正则匹配到的字符串 如果大小大于0说明合法
    println(r.findAllMatchIn(eml1).size) //1
    println(r.findAllMatchIn(eml2).size) //0
  }
}

代码示例二

object Test02 {
  def main(args: Array[String]): Unit = {
    //找出列表中不合法的邮箱
    val emlList = List("38123845@qq.com", "a1da88123f@gmail.com", "zhansan@163.com", "123afadff.com")
    val regex = """.+@.+\..+""".r
    //找到不合法的邮箱
    val list = emlList.filter(x => if (regex.findAllMatchIn(x).size < 1) true else false)
    //输出不合法的邮箱
    println(list)
  }
}

代码示例三

object Test19 {
  def main(args: Array[String]): Unit = {
    // 使用括号表示一个分组
    val regex = """.+@(.+)\..+""".r

    val emlList =
      List("38123845@qq.com", "a1da88123f@gmail.com", "zhansan@163.com", "123afadff.com")

    val emlCmpList = emlList.map {
      //说明  x@regex 判断 list 中的每一个值是否符合正则
      //同时定义 一个 company 用来保存 @之后 .com 之前的值 
      //正则表达式中  .+@(.+)\..+  ||| \. 已经明确的表示匹配在.之前的内容
      //因此 company 的值为 @之后 .com 之前的值 
      case x@regex(company) => s"${x} => ${company}"
      case x => x + "=>未知"
    }
    //输出 
    println(emlCmpList)
  }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值