在Scala中正则表达式的类型

复制代码
package Scala12_3

//正则表达式
object Scala12_03 {
  def main(args: Array[String]): Unit = {
    //    1,[ab]:表示匹配一个字符,或者是a或者是b
    //    2.[a-z]:表示a到z的26个字母中的任意一个
    //    3.[A-Z]:表示A到Z的26个字母中的任意一个
    //    4.[0-9]:表示0到9的10中的任意一个
    //    4.1[^ab]:表示匹配一个字符,除a,b之外的
    //    5.{11}:表示前面的字符能出现11次、
    //    定义一个正则表达式
    //    val reg1 = "^[0-9]{11}".r
    //    val reg1 = "\\w".r
    //    6.脱字符^如果在正则的最前面,表示,要匹配的内容必须在字符串的开头
    //    7.脱字符$如果在正则的最后面,表示,要匹配的内容必须在字符串的结尾
    //    8.英文的 . :表示除了换行之外的其他任意一个字符
    //    9.\d:表示0-9的一个数字
    //    10.\D:表示除d之外的字符
    //    11.\w:[a-zA-Z0-9_]63个字符中任意一个
    //    12.\W:除[a-zA-Z0-9_]63个字符中不是字符的任意一个
    //    13.\s:空格
    //    14.\S:除\s之外
    //    15.量词
    //    15.1 *:表示 >=0
    //    15.2 +:表示 >=1重复出现
    //    15.3 ?:表示0次或者1次
    //    15.4 {11}恰好11次
    //    15.5 {3,5}最少3次最多5次
    //    15.6 {3,}最少3次最多不限
    //    贪婪模式
    //    正则匹配默认为贪婪模式
    //    16 ? 非贪婪模式

    //    val reg1 = "abc".r
    //    在如下字符串中 查找 满足正则表达式要求的内容
    //    val str = "i am abc"
    //    val rs = reg1.findFirstIn("i am abc")
    //    if(!rs.isEmpty){
    //      println("找到的是:",rs.get)
    //    }
    //    找到全部
    //    找全部的手机号
    //    规则:
    //    1. 11位数字
    //    2.第一个数字是1
    //    3.第二位数字是3-9的数
    //val reg1 = "1[3-9]\\d{9}".r
    // reg1.findAllIn("1361272342333 hgef:14334565761,邮编:433100 sfgsd _osdgbj;asdf").toList.foreach(println)
    //  验证:给定的字符串是否符合正则表达式的要求
    //    用户名的规则
    //    1.长度在6-12位
    //    2.只能以字母开头
    //    3.只能包含4种字母,数字,下划线,#
//    val name1 = "_354!!@@.com"
//    val name2 = "abc"
//    val name3 = "adimn123#"
//    val reg2 = "[a-zA-Z][a-zA-Z0-9_#]{5,11}".r
//    println(reg2.matches(name1))
//    println(reg2.matches(name2))
//    println(reg2.matches(name3))
//    println(reg2.matches("a24235235234253fhhgkdfshsjarewgo;jasjkdgp3oio1234ryweqpt9eg"))
//
//    val reg1 = "(1[3-9]\\d)(\\d{3})(\\d{5})".r
//    val str = "13612723423 hgef:14334565761,邮编:433100 sfgsd _osdgbj;asdf"
//    val newStr = reg1.replaceAllIn(str,m =>{
//      m.group(1) +"###" +m.group(3)
//    })
//    println(newStr)

//     reg1.findAllIn("1361272342333 hgef:14334565761,邮编:433100 sfgsd _osdgbj;asdf").toList.foreach(println)
val reg1 = "(4[2-9]\\d{4})(\\d{8})(\\d{4})".r
    val str = "13612723423 hgef:14334565761,邮编:433100 sfgsd _osdgbj;asdf,420321492923994478"
    val newStr = reg1.replaceAllIn(str, m => {
      m.group(1)  + m.group(2)+ "####"
    })
    println(newStr)
  }
}
相关推荐
hqyjzsb10 分钟前
Python 技术人转型 AI:CAIE Level I、Level II 对比怎么选
开发语言·人工智能·python·金融·数据挖掘·数据分析·aigc
承渊政道1 小时前
【Python编程—从入门到实践】(Python字典:从基础语义到现代工程实践)
开发语言·python·pycharm·字典·嵌套
luj_17681 小时前
一线一区一变破解人盯人防守密码
开发语言·网络·c++·经验分享·算法
名字还没想好☜2 小时前
Python 字符编码实战:encode/decode、UnicodeDecodeError 与 open 的 encoding 坑
开发语言·后端·python·编程语言
萧瑟余晖2 小时前
持久层选型与框架对比详解
开发语言·架构
CodeStats2 小时前
【Java 类加载器】Java 类加载器完整体系深度拆解(上):从 JVM 启动到双亲委派模型
java·开发语言·jvm·classloader·双亲委派
软件黑马王子2 小时前
24.Editor 资源加载:主要作用和基本原理
开发语言·前端框架·c#
luj_17682 小时前
中锋卡位与开放线博弈
c语言·开发语言·网络·经验分享·算法
未来之窗软件服务2 小时前
计算机二级[英文]-C 逻辑运算和fopen—东方仙盟
c语言·开发语言·仙盟创梦ide·东方仙盟
Jackson_GJH2 小时前
日志_图解spdlog
开发语言·c++