Scala中正则表达式

package Scala11

//正则表达式(Regular Expression)
//        正则表达式只对文本
object hshaj {
  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]:表示从1到9的10个中任意的一个
    //  4.1 [^ab]:表示匹配一个字符,除a,b之外的
    //  5.  {11}:前面的字符能出现11次

    //    val reg1="^[0-9]{11}$".r
    //    val reg1="^ab".r
    //    val reg1="a..c".r
    //    val reg1 = "\\d{3,6}?".r

    //  6.脱字符 ^ 如果在正则的最前面,表示,要匹配的内容必须在字符串的开头
    //  7.脱字符 $ 如果在正则的最后边,表示,要匹配的内容必须在字符串的结尾
    //  8.英文的 . :表示除了换行之外的其他的任意一个字符
    //  9.\d:表示0-9的数字
    //  10.\D:表示 除\d之外的字符
    //  11. \w:[a-zA-Z0-9_]63个字符中任意一个.“一个字”
    //  12. \W:除\w之外的字符
    //  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 str="i am abc"
    //    val rs=reg1.findFirstIn("i am abc")
    //    if(!rs.isEmpty){
    //      println("找到是:",rs.get)
    //    }

    //    找全部的->findAllIn    toList->列表
    //    reg1.findAllIn("i  am a!c a!c 1 2 345 A _ -").toList.foreach(println)
    //    reg1.findAllIn("小花:13612345678, 小明12345698741,邮编:433100").toList.foreach(println)
    //正则查找:找全部的手机号
    //规则:
    // 1. 11位数字
    // 2. 第一个数字是1
    // 3. 第二个数字是3-9的数
//    val reg1 = "1[3-9]\\d{9}".r
//
//    reg1.findAllIn("136123456781 and 13987654321 01812345678 11812345678 hdskjdsh 6734688734683  12334478393").toList.foreach(println)


    //验证:给定的字符串是否符合正则表达式的要求
    //用户名的规则:
    //1. 长度在6-12位
    //2. 只能以字母开头
    //3. 只能包含如下4种:字母,数字,下划线,#
//    val name1 = "_56!!!@@@.com" //不符合
//    val name2 = "abc" //不符合
//    val name3 = "adcmin123#" //
//    val reg2 = "[a-zA-Z][a-zA-Z0-9_#]{5,11}".r
//    //matches:验证字符串是否满足
//    println(reg2.matches(name1))
//    println(reg2.matches(name2))
//    println(reg2.matches(name3))


    //应用:替换
    //要求把手机号的4-7位换成####

//    val reg1 = "(1[3-9]\\d)(\\d{4})(\\d{4})".r
//    val str="123 136123456781 and 13987654321 01812345678 11812345678 hdskjdsh 6734688734683  12334478393"
//    val newStr=reg1.replaceAllIn(str,m=>{
      println(m.group(1))
      println(m.group(2))
      println(m.group(3))
//      m.group(1)+"xxxx"+m.group(3)
//    })
//    println(newStr)
    //把身份证号后4位替换
    val reg1="(\\d{14})(\\d{4})".r
    val sfz="421202200703180930"
    val newsfz=reg1.replaceAllIn(sfz,m=>{
      m.group(1)+"^__^"
    })
    println(newsfz)
  }

}

你可能感兴趣的:(scala,正则表达式,mysql)