Scala - 正则表达式

Scala - 正则表达式 首页 / Scala入门教程 / Scala - 正则表达式

本章介绍Scala如何通过scala.util.matching包中提供的 Regex 类支持正则表达式。

尝试下面的示例程序,我们将尝试从语句中找出单词 Scala 。

import scala.util.matching.Regex

object Demo {
   def main(args: Array[String]) {
      val pattern="Scala".r
      val str="Scala is Scalable and cool"
      
      println(pattern findFirstIn str)
   }
}

将上述程序保存在 Demo.scala 中。以下命令用于编译和执行该程序。

链接:https://www.learnfk.comhttps://www.learnfk.com/scala/scala-regular-expressions.html

来源:LearnFk无涯教程网

\>scalac Demo.scala
\>scala Demo
Some(Scala)

我们创建一个String并在其上调用 r()方法, Scala隐式地将String转换为RichString并调用该方法以获取Regex的。

您可以使用mkString()方法来连接输出列表,并且可以1使用管道(|)搜索Scala的小写大写字母,也可以使用 Regex 构造函数或 r()方法来创建模式。

import scala.util.matching.Regex111
   def main(args: Array[String]) {
      val pattern=new Regex("(S|s)cala")
      val str="Scala is scalable and cool"
      
      println((pattern findAllIn str).mkString(","))
   }
}

将上述程序保存在 Demo.scala 中。以下命令用于编译和执行该程序。

链接:https://www.learnfk.comhttps://www.learnfk.com/scala/scala-regular-expressions.html

来源:LearnFk无涯教程网

\>scalac Demo.scala
\>scala Demo
Scala,scala

如果您想替换匹配的文本,可以使用 replaceFirstIn()替换第一个匹配项,或者使用 replaceAllIn()替换所有匹配项。

object Demo {
   def main(args: Array[String]) {
      val pattern="(S|s)cala".r
      val str="Scala is scalable and cool"
      
      println(pattern replaceFirstIn(str, "Java"))
   }
}

将上述程序保存在 Demo.scala 中。以下命令用于编译和执行该程序。

链接:https://www.learnfk.comhttps://www.learnfk.com/scala/scala-regular-expressions.html

来源:LearnFk无涯教程网

\>scalac Demo.scala
\>scala Demo
Java is scalable and cool

正则表达式

Example描述
.匹配换行符以外的任何字符
[Rr]uby匹配“ Ruby”或“ ruby​​”
rub[ye]匹配“ ruby​​”或“ rube”
[aeiou]匹配任何一个小写的元音
[0-9]匹配任意数字;与[0123456789]相同
[a-z]匹配任何小写ASCII字母
[A-Z]匹配任何大写ASCII字母
[a-zA-Z0-9]符合以上任何条件
[^aeiou]匹配小写的元音
[^0-9]匹配数字以外的任何东西
\\d匹配数字:[0-9]
\\D匹配一个非数字:[^ 0-9]
\\s匹配空格字符:[\ t\ r\ n\ f]
\\S匹配非空格:[^\ t\ r\ n\ f]
\\w匹配一个单词字符:[A-Za-z0-9_]
\\W匹配一个非单词字符:[^ A-Za-z0-9_]
ruby?匹配“ rub”或“ ruby​​”:y是可选的
ruby*匹配“ rub”加上0或更多y
ruby+匹配“ rub”加上1个或多个y
\\d{3}精确匹配3位数字
\\d{3,}匹配3个或更多数字
\\d{3,5}匹配3、4或5位数字
([Rr]uby(, )?)+匹配"Ruby", "Ruby, ruby, ruby"

注意-每个反斜杠在上面的字符串中出现两次,这是因为在Java和Scala中,单个反斜杠是字符串文字中的转义字符,而不是出现在字符串中的常规字符。因此,您需要编写"\\"来代替字符串中的单个反斜杠,而不是"\"。

正则表达式示例

import scala.util.matching.Regex

object Demo {
   def main(args: Array[String]) {
      val pattern=new Regex("abl[ae]\\d+")
      val str="ablaw is able1 and cool"
      
      println((pattern findAllIn str).mkString(","))
   }
}

将上述程序保存在 Demo.scala 中。以下命令用于编译和执行该程序。

链接:https://www.learnfk.comhttps://www.learnfk.com/scala/scala-regular-expressions.html

来源:LearnFk无涯教程网

\>scalac Demo.scala
\>scala Demo
able1

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

手把手带你搭建秒杀系统 -〔佘志东〕

大厂广告产品心法 -〔郭谊〕

说透低代码 -〔陈旭〕

林外 · 专利写作第一课 -〔林外〕

人人都用得上的数字化思维课 -〔付晓岩〕

计算机基础实战课 -〔彭东〕

深入浅出可观测性 -〔翁一磊〕

云计算的必修小课 -〔吕蕴偲〕

LangChain 实战课 -〔黄佳〕

好记忆不如烂笔头。留下您的足迹吧 :)