Scala 正则表达式

[复制链接]
作者: 随风飘扬 | 时间: 2024-5-8 04:38:16 | 其他|
0 186

2876

主题

2876

帖子

8628

积分

博士

Rank: 10Rank: 10Rank: 10

积分
8628
发表于 2024-5-8 04:38:16| 显示全部楼层 |阅读模式
在Scala中,你可以使用scala.util.matching.Regex类来进行正则表达式的匹配和处理。下面是一些使用Scala正则表达式的代码示例:
1. 匹配字符串
使用matches方法来检查整个字符串是否匹配给定的正则表达式:
scala
val regex = "Hello, (\\w+)!".r  
val str = "Hello, World!"  
str match {  
case regex(name) => println(s"Matched name: $name")  
case _ => println("No match")  
}
2. 查找匹配项
使用findFirstIn或findAllIn方法来查找字符串中的匹配项:
scala
val regex = """(\d+)""".r // 匹配数字  
val str = "There are 123 apples and 456 oranges."  
// 查找第一个匹配项  
val firstMatch = regex.findFirstIn(str)  
firstMatch.foreach(println) // 输出: 123  
// 查找所有匹配项  
val allMatches = regex.findAllIn(str)  
allMatches.foreach(println) // 输出: 123 和 456
3. 替换匹配项
使用replaceAllIn方法来替换字符串中所有匹配正则表达式的部分:
scala
val regex = "\\d+".r // 匹配数字  
val str = "The price is 123 dollars and 45 cents."  
val newStr = regex.replaceAllIn(str, "XXX")  
println(newStr) // 输出: The price is XXX dollars and XXX cents.
4. 分割字符串
使用split方法根据正则表达式来分割字符串:
scala
val regex = ", ".r // 以逗号和空格为分隔符  
val str = "apples, oranges, bananas"  
val parts = str.split(regex)  
parts.foreach(println) // 输出: apples, oranges, bananas(分别输出)
5. 使用正则表达式对象
你也可以创建一个Regex对象,并使用它的pattern方法来获取底层的java.util.regex.Pattern对象:
scala
val pattern = new Regex("""(\d{4})-(\d{2})-(\d{2})""") // 匹配日期格式 YYYY-MM-DD  
val str = "Today is 2023-03-15."  
val matcher = pattern.matcher(str)  
if (matcher.find()) {  
println(s"Year: ${matcher.group(1)}, Month: ${matcher.group(2)}, Day: ${matcher.group(3)}")  
}
这些示例展示了Scala中正则表达式的基本用法,包括匹配、查找、替换和分割字符串。你可以根据具体需求调整正则表达式模式,并使用Scala的Regex类提供的方法来执行相应的操作。

来源:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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