(一)正则表达式的定义
正则表达式(Regular Expression)是一种用于匹配、查找和替换文本中特定模式的字符串。
(2)第一个正则表达式的案例
要点:
1. 在scala中,正则表达式就是在字符串的后面添加.r。
2. \\是对\进行转义。\d是一个整体,用来表示一个整数。
【总结正则表达式的使用步骤】
1. 定义匹配规则。写正则表达式
2. 定义数据,准备要匹配的内容。
3. 将字符串使用规则进行匹配。
package reg
/**
* 1·什么是正则表达式
* 正则表达式是一种用来匹配字符串的强大工具, 它由普通字符 (例如字符 a 到 z)和特殊字符(称为"元字符")组成。
*
*2·使用步骤
* (1)、定义正则表达式。"".r
* (2)、调用正则表达式的方法
*3·规则
* (1)\d 表示一个数字
* (2)\d{5} 表示5个数字 {n} 量词 。让前面规则重复n次
*/
object reg01 {
def main(args: Array[String]): Unit = {
// 定义一个正则表达式
//val reg = "\d\d".r //两个相邻的数字
val reg = "\d{5}".r //5个相邻的数字
// 1、匹配。在目标字符串中,把符合正则表达式要求内容,找出来。
val source = "67891 2105 in abc"
reg.findAllIn(source).foreach(println)
// 2、验证。检查给定目标字符串,是否符合正则表达式的要求。
//reg.matches()
//转义字符 \ 改变后面字符的含义
// \d ----> 表示数字
// \n ----> 表示换行
// \t ----> 表示制表符
}
}
(三)匹配合法手机号
1. 匹配一个数字。\\d
2. 匹配两个数字。\\d\\d
3. 匹配11个数字。\\d{11}
4. 匹配11个数字,并且以1开头。1\\d{10}
5. 只能匹配11个数字,不能多也不能少。^1\\d{10}$
6. 第2位可以是3,5,6,7,8,9。^1[356789]\\d{9}$
package reg
/**
* 目标:在给的字符串中,匹配合法的手机号
* 1·有11个连续的数字
* 2·手机号以1开头
* 3·手机号第二位是3、5、7、8、
*3·规则
* (1)\d 表示一个数字
* (2)\d{5} 表示5个数字 {n} 量词 。让前面规则重复n次
* (3)\b 表示单词边界 空格,或者是开始
* (4)[]. 表示其中任意一个字符,[3,5,7,8] 就是4个数字中的一个,[3-9]就是3456789中的某一个 [a-z]表示26个字母中的某一个
*
*/
object reg02 {
def main(args: Array[String]): Unit = {
val reg = "\b1[3578]\d{9}".r //1的后面跟着3,5,7,8,后面跟着9个相邻的数字
val source = "13644565651 14534789035 534142435465757"
reg.findAllIn(source).foreach(println)
// val reg = "\d{11}".r
//val source = "67891 2105 in abc"
//reg.findAllIn(source).foreach(println)
}
}
(四)matchs方法
package reg
/**
* 2·正则表达式
* (5)^ 表示开始
* (6)$ 表示结束
*/
object reg02 {
def main(args: Array[String]): Unit = {
val reg = "^1[3578]\d{9}$".r //1的后面跟着3,5,7,8,后面跟着9个相邻的数字
println(reg.matches("a13644565651")) //true
println(reg.matches("13644565651")) //true
println(reg.matches("1364456565")) //false
println(reg.matches("136445656511")) //false
}
}