Scala学习之字符串篇(六):使用正则表达式
2016-12-08 00:00
357 查看
在Scala中你只需要在正则表达式字符串后边加上一个".r"就可以使用正则表达式了。
下面介绍正则表达式常用的两个匹配方法findFirstIn和findAllIn。
方法findFirstIn可以匹配到第一个符合正则表达式规则的字符串,没有匹配到任何结果的情况下返回None。
方法findAllIn可以匹配到所有符合正则表达式规则的字符串,返回的结果是一个Iterator。你可以把它转化为一个Array来使用。如果没有匹配到任何符合规则的字符换那么,它将返回一个空Iterator。
接下来看看如何使用正则表达式来替换字符串。
我们可以调用字符串的replaceAll方法来进行字符换替换,这个方法接收两个参数,第一个是正则表达,第二个是要被替换成的字符串。
还有一种方式是,提前编译好一个正则表达式,然后调用正则表达式的replaceAllIn方法来进行替换。
如果你只想替换第一次出现的位置的字符换,而不是所有匹配的位置,那么你可以使用字符串的replaceFirst或者正则表达式的replaceFirstIn方法。
然后我们继续讨论如何使用正则表达式来拆分字符串。
看一看如何使用正则表达式把"100 Bananas"拆分为100何Bananas两部分。
scala> val numPattern = "[0-9]+".r numPattern: scala.util.matching.Regex = [0-9]+
下面介绍正则表达式常用的两个匹配方法findFirstIn和findAllIn。
方法findFirstIn可以匹配到第一个符合正则表达式规则的字符串,没有匹配到任何结果的情况下返回None。
scala> val address = "123 Main Street Suite 101" address: String = 123 Main Street Suite 101 scala> numPattern.findFirstIn(address) res4: Option[String] = Some(123) scala> numPattern.findFirstIn("abc") res5: Option[String] = None
方法findAllIn可以匹配到所有符合正则表达式规则的字符串,返回的结果是一个Iterator。你可以把它转化为一个Array来使用。如果没有匹配到任何符合规则的字符换那么,它将返回一个空Iterator。
scala> val matchs = numPattern.findAllIn(address) matchs: scala.util.matching.Regex.MatchIterator = non-empty iterator scala> matchs.getClass() res6: Class[_ <: scala.util.matching.Regex.MatchIterator] = class scala.util.matching.Regex$MatchIterator scala> matchs.toArray.foreach(println(_)) 123 101 scala> val matchs = numPattern.findAllIn("abc") matchs: scala.util.matching.Regex.MatchIterator = empty iterator
接下来看看如何使用正则表达式来替换字符串。
我们可以调用字符串的replaceAll方法来进行字符换替换,这个方法接收两个参数,第一个是正则表达,第二个是要被替换成的字符串。
scala> "123 Main Street".replaceAll("[0-9]", "x") res13: String = xxx Main Street
还有一种方式是,提前编译好一个正则表达式,然后调用正则表达式的replaceAllIn方法来进行替换。
scala> regex.replaceAllIn("123 Main Street", "x") res15: String = xxx Main Street
如果你只想替换第一次出现的位置的字符换,而不是所有匹配的位置,那么你可以使用字符串的replaceFirst或者正则表达式的replaceFirstIn方法。
scala> "123".replaceFirst("[0-9]", "x") res16: String = x23 scala> "[0-9]".r.replaceFirstIn("123","x") res20: String = x23
然后我们继续讨论如何使用正则表达式来拆分字符串。
看一看如何使用正则表达式把"100 Bananas"拆分为100何Bananas两部分。
scala> val pattern = "([0-9]+) ([a-zA-Z]+)".r pattern: scala.util.matching.Regex = ([0-9]+) ([a-zA-Z]+) scala> val pattern(count, fruit) = "100 Bananas" count: String = 100 fruit: String = Bananas
相关文章推荐
- Scala学习笔记--正则表达式基础知识、如何在scala内使用
- 学习和使用正则表达式的好工具 the regulator
- 在Javascript下使用正则表达式的学习笔记
- Java中使用正则表达式实现字符串匹配
- preg_replace(),ereg_replace() 使用正则表达式时特殊字符需要转义
- C#中可以使用正则表达式来过滤html字符
- Java中使用正则表达式实现字符串匹配
- 30分钟学习正则表达式的使用
- glib学习笔记 - 使用正则表达式
- 在Sql语句中使用正则表达式来查找你所要的字符
- 在Sql语句中使用正则表达式来查找你所要的字符 及调试问题
- 正则学习之一:在js中使用正则表达式
- Java中使用正则表达式实现字符串匹配
- (学习笔记)简单正则表达式的使用实例[javascript]
- 在JS使用正则表达式屏蔽敏感字符
- Java中使用正则表达式实现字符串匹配
- Java中使用正则表达式来实现字符串匹配
- EditPlus中的正则表达式使用--如何使用查找到的原字符
- 在Sql语句中使用正则表达式来查找你所要的字符
- Java中使用正则表达式实现字符串匹配