Scala正则表达式应用实例与常用用法详解
时间:2026-08-17 | 作者:冻月看渠 | 阅读:0正则表达式在 Scala 中的应用,一个通用又实用的技能。不管你是处理日志、校验手机号,还是从字符串里提取特定内容,正则都是绕不开的“效率神器”。
一、先搞懂:正则到底是个啥?
不少开发者对正则的第一印象是“难学”,其实核心就一句话:正则是一套独立于编程语言的“字符串规则语言”——不管你用 Scala、Ja va 还是 Python,只要是写d就代表匹配数字,写{11}就代表重复 11 次,规则是通用的。
它主要用来干两件事:
- 查找:从大字符串里揪出符合规则的子串(比如从一段文字里找手机号)
- 匹配:验证整个字符串是否符合规则(比如检查输入的是不是合法手机号)
二、实战:用 Scala 找字符串里的 11 位数字
直接看代码示例——一个“提取 11 位数字”的演示,咱们边看边拆:
/** 1、处理字符串* 2、查找:在大字符串里找符合规则的子串* 3、匹配:验证字符串是否满足规则* 划重点:正则是通用技术,和编程语言无关!*/object reg01 { def main(args: Array[String]): Unit = { // 1. 定义正则规则:匹配11位连续数字 val reg = "\d{11}".r // 2. 准备要处理的目标字符串 val target = "I like 我喜欢 数13347589473!" // 3. 查找并输出结果 println("找到的11位数字是:") reg.findAllIn(target).foreach(println) }}
代码拆解:3 步搞定正则匹配
1. 定义正则规则:val reg = "d{11}".r
这里有两个关键点:
d{11}:这是正则语法——d代表“一个数字”(Scala 里要写两个反斜杠\做转义),{11}代表“连续出现 11 次”,合起来就是“匹配 11 位连续数字”;.r:这是 Scala 的“小魔法”——把普通字符串转成Regex对象,只有转成这个对象,才能调用正则的专属方法。
2. 准备目标字符串:val target = "I like 我喜欢 数13347589473!"
就是咱们要处理的原始内容,里面混了英文、中文和数字,我们要把 11 位的数字“揪”出来。
3. 执行查找:reg.findAllIn(target).foreach(println)
findAllIn(target):Regex对象的核心方法,作用是把目标字符串里所有符合规则的子串都找出来,返回一个可迭代的集合;foreach(println):遍历集合,把找到的结果打印出来。
运行结果
执行代码后,控制台会直接输出:
找到的11位数字是:13347589473
三、进阶:正则在 Scala 里的常用玩法
光“查找”还不够,正则还有很多实用操作,这里补充 3 个高频场景:
1. 只找第一个匹配的内容
用findFirstIn方法,适合只需要“第一个结果”的场景:
// 找第一个11位数字val firstNum = reg.findFirstIn(target)firstNum.foreach(res => println(s"第一个匹配结果:$res"))
输出:第一个匹配结果:13347589473
2. 验证整个字符串是否符合规则
用matches方法,比如验证“输入的是不是纯 11 位数字”:
val phone1 = "13347589473" // 合法val phone2 = "13347589473abc" // 不合法println(phone1.matches("\d{11}")) // 输出:trueprintln(phone2.matches("\d{11}")) // 输出:false
3. 替换匹配的内容
用replaceAllIn方法,把找到的内容替换成其他字符:
// 把11位数字替换成****脱敏val desensitized = reg.replaceAllIn(target, "****")println(desensitized) // 输出:I like 我喜欢 数****!
四、最后总结:正则的“通用 + 高效”
- 规则通用:正则语法是跨语言的,学会
d、{n}、w这些基础语法,换任何语言都能用; - Scala 调用流程固定:定义规则(字符串 +.r)→ 调用方法(findAllIn/matches 等)→ 处理结果;
- 场景广泛:日志解析、表单校验、数据清洗……只要涉及字符串处理,正则都是“偷懒神器”。
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- Scala正则表达式特殊规则详解与常见用法
- 时间:2026-08-17
精选合集
更多大家都在玩
大家都在看
更多-
- 糖尿病完全不能吃糖吗
- 时间:2026-09-15
-
- 蚂蚁庄园小课堂2026年9月16日最新题目答案
- 时间:2026-09-15
-
- 小鸡答题今天的答案是什么2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园每日答题答案2026年9月16日
- 时间:2026-09-15
-
- 以下哪种粮食是酿造绍兴黄酒的主要原料 蚂蚁庄园今日答案9月16日
- 时间:2026-09-15
-
- 劝学名句“及时当勉励,岁月不待人”出自哪位诗人 蚂蚁庄园今日答案9.16
- 时间:2026-09-15
-
- 蚂蚁庄园今天答题答案2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园答题今日答案2026年9月16日
- 时间:2026-09-15
