scala 正则表达式
来源:互联网 发布:电子图章制作软件 编辑:程序博客网 时间:2024/05/21 10:57
正则表达式是所有攻城狮尤其是算法,数据相关攻城狮必备的技能。日常工作中免不了处理各种字符串与字符串操作,写好正则表达式能大幅度提高工作效率,提升工作愉悦度。现在就简单总结一下scala中常见的正则表达式用法。
如果有对正则表达式不熟悉的同志们,可以查看正则表达式30分钟入门教程。
1.匹配电话号码
匹配电话号码是我们常见的需求之一。代码如下:
def reg() = { val PHONE_PATTERN = """1(([3,5,8]\d{9})|(4[5,7]\d{8})|(7[0,6-8]\d{8}))""".r val num = "13566513245" val res = PHONE_PATTERN.findFirstIn(num).get println(res) }
在这里,”“”表示raw string,三引号括起来的字符串表示不需要转义。因为正则表达式本身比较长,可读性也比较差,所以用三引号可以降低阅读难度,并且缩短字符串长度。
2.匹配小写字母
def reg2() = { val str = "abc" val pattern = new Regex("[a-z]+") println(pattern.findFirstIn(str).get) }
3.匹配所有英文字母
def reg3() = { val str = "abcDEFg" //val pattern = new Regex("(?i)[a-z]+") val pattern = new Regex("[a-zA-Z]") println(pattern.findAllIn(str).mkString("")) }
注意pattern的两种写法都可以。
4.匹配email
def reg4() = { val str = "email:leilei@mi.com.cn" val pattern = new Regex("""(?i)[a-z0-9._-]+@[a-z0-9._-]+(\.[a-z0-9._-]+)+""") println(pattern.findAllIn(str).mkString("")) }
5.匹配日期,并提取年月日
def reg5() = { val str = "2017-01-01" val datePattern = new Regex("""(\d{4})-(\d{2})-(\d{2})""") val datePattern(year, month, day) = str println(year, month, day) str match { case datePattern(year, month, day) => println(s"year is $year.\n" + f"month is $month.\n" + raw"day is $day") } }
正则表达式中,小括号表示分组的概念。从上面的例子可以看出,scala正则中提取分组可以采用两种方式,都很方便。模式匹配的方式可能更直观,更符合scala的习惯。
6.非铆定
def reg7() = { val datePattern = new Regex("""(\d{4})-(\d{2})-(\d{2})""") val pattern = datePattern.unanchored val str = "Date: 2017-05-21 19:25:18" str match { case pattern(year, month, day) => println(s"year is $year.\n" + f"month is $month.\n" + raw"day is $day") } }
如果要非铆定,可以使用上面的用法。
阅读全文
0 0
- 0019.scala正则表达式
- Scala正则表达式
- scala Regex 正则表达式
- Scala 正则表达式
- Scala 正则表达式
- scala-正则表达式
- scala 正则表达式
- Scala正则表达式模式
- scala正则表达式
- scala支持正则表达式
- [Scala]Scala学习笔记七 正则表达式
- Scala教程(九)正则表达式
- scala基础23-正则表达式
- Scala入门之正则表达式
- scala 中文匹配正则表达式
- Scala——正则表达式
- scala模式匹配和正则表达式
- Scala的正则表达式regex操作
- 1024. Palindromic Number (25)(PAT甲)
- plsql 和 Navicat 创建和调用存储过程的区别
- 北京20日游记(ctsc2017~thusc2017)
- 对象修改前后对比
- Java面向对象概述
- scala 正则表达式
- csdn如何转载别人的文章
- java中方法重写 this和super的区别
- mysql (master/slave)复制原理及配置
- MFC 定时器用法
- PHP环境搭建(6)----php扩展安装
- oracle查看并修改ZHS16GBK字符集
- Oracle 时间差计算
- 微信小程序新增拖动组件:movable-view