scala的正则与java略有不同,除了可直接调用java里的相关类外,scala也提供了regex类来处理相应需求。
最常见的一种应用场景,寻找字符串中的连续字母,
val pattern = "[a-zA-Z]+".r
pattern.findAllIn("Hello, world").foreach(println(_))
若是pattern里分了group则需稍做修改,
val pattern = "([a-zA-Z]+)=([0-9]+)".r
pattern.findAllIn("a=1,b=2").matchData.foreach(println(_.group(1)))
group相关信息需要通过matchData获取。
上面两种调用方式其实与java正则无太大差异,真正的不同在于scala中的正则可以进行pattern matching。
val CommandPattern = "([a-z]+)\\s+(.*?)".r
command match {
case CommandPattern("help", content) => println(content)
case CommandPattern("scan", content) => println(content)
case _ => println("default")
}
在进行字符串匹配时,上述用法会特别方便。