• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Scala中正则表达式以及与模式匹配结合(多种方式)

    正则表达式

     //"""原生表达
     val regex="""([0-9]+)([a-z]+)""".r
     val numPattern="[0-9]+".r
     val numberPattern="""\s+[0-9]+\s+""".r

    说明:.r()方法简介:Scala中将字符串转换为正则表达式

     /** You can follow a string with `.r`, turning it into a `Regex`. E.g.
     *
     * `"""A\w*""".r` is the regular expression for identifiers starting with `A`.
     */
     def r: Regex = r()

    模式匹配一

     //findAllIn()方法返回遍历所有匹配项的迭代器
     for(matchString - numPattern.findAllIn("99345 Scala,22298 Spark"))
      println(matchString)
    

    说明:findAllIn(…)函数简介

    /** Return all non-overlapping matches of this `Regex` in the given character 
     * sequence as a [[scala.util.matching.Regex.MatchIterator]],
     * which is a special [[scala.collection.Iterator]] that returns the
     * matched strings but can also be queried for more data about the last match,
     * such as capturing groups and start position.
     * 
     * A `MatchIterator` can also be converted into an iterator
     * that returns objects of type [[scala.util.matching.Regex.Match]],
     * such as is normally returned by `findAllMatchIn`.
     * 
     * Where potential matches overlap, the first possible match is returned,
     * followed by the next match that follows the input consumed by the
     * first match:
     *
     * {{{
     * val hat = "hat[^a]+".r
     * val hathaway = "hathatthattthatttt"
     * val hats = (hat findAllIn hathaway).toList      // List(hath, hattth)
     * val pos = (hat findAllMatchIn hathaway map (_.start)).toList // List(0, 7)
     * }}}
     *
     * To return overlapping matches, it is possible to formulate a regular expression
     * with lookahead (`?=`) that does not consume the overlapping region.
     *
     * {{{
     * val madhatter = "(h)(?=(at[^a]+))".r
     * val madhats = (madhatter findAllMatchIn hathaway map {
     * case madhatter(x,y) => s"$x$y"
     * }).toList          // List(hath, hatth, hattth, hatttt)
     * }}}
     *
     * Attempting to retrieve match information before performing the first match
     * or after exhausting the iterator results in [[java.lang.IllegalStateException]].
     * See [[scala.util.matching.Regex.MatchIterator]] for details.
     *
     * @param source The text to match against.
     * @return  A [[scala.util.matching.Regex.MatchIterator]] of matched substrings.
     * @example  {{{for (words - """\w+""".r findAllIn "A simple example.") yield words}}}
     */
     def findAllIn(source: CharSequence) = new Regex.MatchIterator(source, this, groupNames)

    模式匹配二

     //找到首个匹配项
     println(numberPattern.findFirstIn("99ss java, 222 spark,333 hadoop"))

    模式匹配三

    //数字和字母的组合正则表达式
     val numitemPattern="""([0-9]+) ([a-z]+)""".r
     val numitemPattern(num, item)="99 hadoop"

    模式匹配四

     //数字和字母的组合正则表达式
     val numitemPattern="""([0-9]+) ([a-z]+)""".r
     val line="93459 spark"
     line match{
      case numitemPattern(num,blog)=> println(num+"\t"+blog)
      case _=>println("hahaha...")
     }
    

    val line="93459h spark"
     line match{
      case numitemPattern(num,blog)=> println(num+"\t"+blog)
      case _=>println("hahaha...")
     }

    本节所有程序源码

    package kmust.hjr.learningScala19
    /**
     * Created by Administrator on 2015/10/17.
     */
    object RegularExpressOps {
     def main(args:Array[String]):Unit={
     val regex="""([0-9]+)([a-z]+)""".r//"""原生表达
     val numPattern="[0-9]+".r
     val numberPattern="""\s+[0-9]+\s+""".r
     //findAllIn()方法返回遍历所有匹配项的迭代器
     for(matchString - numPattern.findAllIn("99345 Scala,22298 Spark"))
      println(matchString)
     //找到首个匹配项
     println(numberPattern.findFirstIn("99ss java, 222 spark,333 hadoop"))
     //数字和字母的组合正则表达式
     val numitemPattern="""([0-9]+) ([a-z]+)""".r
     val numitemPattern(num, item)="99 hadoop"
     val line="93459h spark"
     line match{
      case numitemPattern(num,blog)=> println(num+"\t"+blog)
      case _=>println("hahaha...")
     }
     }
    }

    总结

    以上所述是小编给大家介绍的Scala中正则表达式以及与模式匹配结合(多种方式),希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

    您可能感兴趣的文章:
    • 浅谈Scala模式匹配
    上一篇:详解Java中的scala正则表达式
    下一篇:还不会正则表达式?赶快看这篇!
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Scala中正则表达式以及与模式匹配结合(多种方式) Scala,中,正则,表达式,以及,