(一)正则表达式的定义
正则表达式(Regular Expression)是一种用于匹配、查找和替换文本中特定模式的字符串。
- 查找:从大字符串里揪出符合规则的子串(比如从一段文字里找手机号)
- 匹配:验证整个字符串是否符合规则(比如检查输入的是不是合法手机号)
(二) 基本组成部分
无论多么复杂的正则表达式,都是由如下4个部分组成
1.字符类。包括单个字符和字符范围。例如,a匹配字符a,[abc]匹配a、b或者c中的任意一个字符,[a-z]匹配从a到z的任意一个小写字母。
2.量词。用于指定前面的字符或字符组出现的次数。例如,*表示前面的字符可以出现0次或多次,+表示前面的字符至少出现1次,?表示前面的字符最多出现1次。如a*可以匹配空字符串、a、aa、aaa等;a+可以匹配a、aa、aaa等,但不能匹配空字符串;a?可以匹配空字符串或者a。
3.锚点。用于指定匹配的位置。例如,^表示匹配行首,$表示匹配行尾。^abc表示匹配以abc开头的行,abc$表示匹配以abc结尾的行。
4.分组。使用括号()来分组。例如,(ab)+表示ab这个组合至少出现1次,如ab、abab、ababab等符合要求。分组还可以用于提取匹配的子字符串等操作。
(三)常见规则
package Array
/**
* 1. 处理字符串
* 2. 查找:在一个大的字符串中,寻找是否有满足规则(条件)的子串
* 3. 匹配、校验:判断指定的字符串是否满足某些规则(条件)
* 这里的规则(条件)就是采用正则表达式写的特殊的字符串
* !!!!!!!!正则表达式与具体的编程语言无关!!!!!!!!
* 是一个独立、通用的计算机技术
*
*
*/
object array1 {
def main(args: Array[String]): Unit = {
// 1.定义正则表达式 . 在scala中,字符串的后面+r,就定义了一个正则表达式
// 2.指定要查找(查找)的目标字符串
// 3.调用正则的方法,输出结果
//例子:判断字符串中是否有数字?
//1.定义正则表达式
val reg ="\d".r
// 2.指定要查找(查找)的目标字符串
val target = "I like 我喜欢 数字 3,6,8!"
println("找到的结果是:")
reg.findAllIn(target).foreach(println)
}
}
package Array
/**
* 1. 处理字符串
* 2. 查找:在一个大的字符串中,寻找是否有满足规则(条件)的子串
* 3. 匹配、校验:判断指定的字符串是否满足某些规则(条件)
* 这里的规则(条件)就是采用正则表达式写的特殊的字符串
* !!!!!!!!正则表达式与具体的编程语言无关!!!!!!!!
* 是一个独立、通用的计算机技术
*
*
*/
object array1 {
def main(args: Array[String]): Unit = {
// 1.定义正则表达式 . 在scala中,字符串的后面+r,就定义了一个正则表达式
// 2.指定要查找(查找)的目标字符串
// 3.调用正则的方法,输出结果
//例子:判断字符串中是否有数字?
// 1. \d 他表示今任意一个数字!
//量词 :表示 前面的规则要重复几次?
// 1. {11} : 表示重复11次。\d{11} 他可以表达一个去11位
//1.定义正则表达式
val reg ="\d{11}".r
// 2.指定要查找(查找)的目标字符串
val target = "I like 我喜欢 数字 12378786645!"
println("找到的结果是:")
reg.findAllIn(target).foreach(println)
}
}
-
字符类相关:
-
[abc]:正字符组,匹配a、b、c中的任意一个字符。 -
[^abc]:负字符组,匹配除a、b、c之外的任意一个字符。 -
\d:匹配任意一个数字字符。 -
\D:匹配任意一个非数字字符。 -
\w:匹配任意一个字母、数字或下划线字符。 -
\W:匹配任意一个非字母、数字和下划线的字符。 -
\s:匹配任意一个空白字符。 -
\S:匹配任意一个非空白字符。
边界符号: -
^:匹配字符串的开头。 -
$:匹配字符串的结尾。
(总结)
-
Scala 中通过字符串后缀
.r可快速定义正则表达式对象,核心语法与 Java 正则兼容,需注意双反斜杠转义特殊字符 -
findAllIn方法用于查找目标字符串中所有符合规则的子串,返回迭代器可通过foreach遍历 -
正则中的
^(开头)、$(结尾)用于限制匹配范围,{n}用于指定精确匹配次数,[ ]用于字符集匹配 -
手机号正则匹配的核心规则为
^1[356789]\d{9}$(匹配完整 11 位合法手机号),缺少$则仅匹配开头符合规则的子串
- 完结撒花 !!!!!!!!!!
- 制作不易 希望·一键三连 在此感谢关注的粉丝宝宝
- 新来的宝宝可以关注下主播哟!!!!!