📅  最后修改于: 2023-12-03 15:19:58.508000             🧑  作者: Mango
Scala 中的正则表达式非常强大并且易于使用。这篇文章将介绍 Scala 中的正则表达式,包括正则表达式的基础语法、模式匹配、组匹配以及替换等。
在 Scala 中,可以通过字符串的 r
方法来创建一个正则表达式对象。例如:
val pattern = "hello world".r
上述代码中,pattern
是一个 Regex
对象,可以用于匹配字符串。
Scala 中的正则表达式与其他语言中的正则表达式大致相同。简单模式包括字符、字符类和量词。
字符:
.
:匹配任意字符\w
:匹配字母、数字、下划线\d
:匹配数字\s
:匹配空白字符字符类:
[abc]
:匹配 a、b 或 c 中的一个[^abc]
:匹配除 a、b 和 c 以外的任意字符[a-z]
:匹配 a 到 z 之间的任意字符[^a-z]
:匹配除 a 到 z 之间的任意字符以外的任意字符量词:
*
:匹配零个或多个+
:匹配一个或多个?
:匹配零个或一个{n}
:匹配恰好 n 次{n,}
:匹配至少 n 次{n,m}
:匹配 n 到 m 次例如,以下是一些示例:
val regex1 = """abc""".r // 匹配 "abc"
val regex2 = """\d+""".r // 匹配任意数字
val regex3 = """\w{3}""".r // 匹配任意三个字母、数字或下划线
Scala 中的模式匹配非常强大且易于使用。可以使用正则表达式进行模式匹配。
val pattern = """(\d{4})-(\d{2})-(\d{2})""".r
val dateStr = "2021-07-29"
dateStr match {
case pattern(year, month, day) => println(s"Year: $year, Month: $month, Day: $day")
case _ => println("Invalid date format")
}
上述代码中,定义了一个日期格式的正则表达式,并对一个日期字符串进行模式匹配。如果匹配成功,则打印日期中的年份、月份和日份;否则打印 "Invalid date format"。
Scala 中,可以使用 ()
对正则表达式进行分组。在模式匹配中,也可以使用组来获取匹配的子串。
val pattern = """(\w+)\s(\w+)""".r
val name = "John Doe"
name match {
case pattern(first, last) => println(s"First Name: $first, Last Name: $last")
case _ => println("Invalid name format")
}
上述代码中,定义了一个正则表达式,匹配形如 "John Doe" 的字符串。使用组来获取匹配中的姓和名。
Scala 中的 replaceAll
方法可以用于替换字符串中的子串。
val pattern = """(\d{4})-(\d{2})-(\d{2})""".r
val input = "Today is 2021-07-29"
val output = pattern.replaceAllIn(input, "YYYY/MM/DD")
println(output) // Today is YYYY/MM/DD
上述代码中,使用正则表达式替换输入字符串中的日期部分。
Scala 中的正则表达式非常强大,可以用于字符串匹配、模式匹配和替换等多种用途。本文介绍了正则表达式的基础语法、模式匹配、组匹配和替换等。希望能够帮助您更好地使用 Scala 的正则表达式功能。