本章介绍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 中。以下命令用于编译和执行该程序。
\>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 中。以下命令用于编译和执行该程序。
\>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 中。以下命令用于编译和执行该程序。
\>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 中。以下命令用于编译和执行该程序。
\>scalac Demo.scala \>scala Demo
able1
参考链接
https://www.learnfk.com/scala/scala-regular-expressions.html
标签:匹配,val,scala,正则表达式,Demo,Scala,无涯,pattern From: https://blog.51cto.com/u_14033984/9435101