12.2 正则表达式

打印 上一主题 下一主题

主题 492|帖子 492|积分 1476

  1. object test04 {
  2.   def main(args: Array[String]): Unit = {
  3.     //1.定义规则。写正则表达式
  4.     val reg = "\\d".r // \\d表示找数字
  5.     //2.在目标字符串中,去按照这个规则去找符合的子字符串
  6.     val result = reg.findFirstIn("我是who,我的电话是:23121")
  7.     if(!result.isEmpty){//检查结果是否为空 !,表示取反。
  8.       println(result.get) //打印结果
  9.        }
  10.     println("-"*40)
  11.     reg.findAllIn("我是who,我的电话是:12312").toList.foreach(println)
  12.   }
  13. }
复制代码
正则表达式现实上是第4行的 .r
而我们要学习的主要内容是 .r 前的" "里能够写什么内容



  1. object test04 {
  2.   def main(args: Array[String]): Unit = {
  3.     //1.定义规则。写正则表达式
  4.     //val reg = "[a-zA-Z]".r // a-z,A-Z中的某一个
  5.     //val reg = "[^a-zA-Z]".r // 不是a-z或者A-Z中的一个
  6.     //val reg = "\\d".r // \\ d 表示数字
  7.     //val reg = "\\D".r // \\ D 表示非数字
  8.     //val reg = "\\w".r // \w 表示 一个字: 0-9 a-z A-Z _
  9.     //val reg = "\\W".r // \W 表示 一个非字:除了 0-9 a-z A-Z _ 之外的
  10.     //val reg = "a\\sb".r // \s 表示 一个空格
  11.    
  12.     //2.在目标字符串中,去按照这个规则去找符合的子字符串
  13.     val result = reg.findFirstIn("我是who,我的电话是:23121")
  14.     if(!result.isEmpty){//检查结果是否为空 !,表示取反。
  15.       println(result.get) //打印结果
  16.        }
  17.     println("-"*40)
  18.     reg.findAllIn("我是who,我的电话是:12312").toList.foreach(println)
  19.   }
  20. }
复制代码

  1. //val reg = "a*".r
  2.     //val reg = "(ab)+".r
  3.     //val reg = "A{5}".r
复制代码
  1.     //规则:
  2.     //1.数字1是第一个字符
  3.     //2.第二个字符是 3—9
  4.     //3.其他是数字,一共有9个数字
  5.    // reg.findAllIn("1163464758456我是一个字符串,23245,我2324,2465467").toList.foreach(println)
  6.     //案例:判断用户名是否合法
  7.     //规则
  8.     //1.字符的长度在:6 ~ 12
  9.     //2.只能包含:a-z,A-Z,0-9,_,-
  10.     //3.不能以数字开头
  11.     val name1 = "abc" // 不合法,长度不够
  12.     val name2 = "abc1234567890" // 不合法。长度太长
  13.     val name3 = "admin123_" // 合法
  14.     val name4 = "1admin123_" // 不合法,数字开头
  15.     //正则表达式
  16.     val reg = "[a-zA-Z_-][0-9a-zA-Z_-]{5,11}".r
  17.     println( reg.matches(name1) )
  18.     println( reg.matches(name2) )
  19.     println( reg.matches(name3) )
  20.     println( reg.matches(name4) )
  21.   }
  22. }
复制代码

  1.     val str = "11112345 and 1234567 are phone numbers";// 包含了手机号
  2.     val reg = "(\\d{3})(\\d{4})(\\d{4})".r // 能匹配手机号的正则表达式
  3.     //任务:把str中的手机号的中间3-4-4的结构,中间4位替换为*
  4.     var str1 = reg.replaceAllIn(str,m =>{
  5.       println(m.group(1))
  6.       println(m.group(2))
  7.       println(m.group(3))
  8.       m.group(1) + "****" + m.group(3)
  9.     })
  10.     println(s"替换之后的字符串是:${str1}")
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

李优秀

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表