Scala中正则表达式以及与模式匹配的示例分析
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要介绍Scala中正则表达式以及与模式匹配的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!正则表达式 //"""原生表达 val regex="""([0-9
千家信息网最后更新 2025年02月01日Scala中正则表达式以及与模式匹配的示例分析
这篇文章主要介绍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中正则表达式以及与模式匹配的示例分析"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
模式
正则
表达式
方法
示例
分析
内容
字母
数字
简介
篇文章
组合
迭代
中将
价值
兴趣
函数
字符
字符串
小伙
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发是怎么学习的
国内基础软件开发公司
r3商务管理平台服务器
阿里巴巴软件开发薪资
twisted 服务器
对软件开发的职业要求
nginx并发请求数据库访问
人口数据库法人数据库
平谷旧服务器回收价钱
4.29首都网络安全日
网络安全规则规定
成人教育网络安全
网络安全用户认证系统
华为刀片服务器维修站点
区块链多极并行网络技术
冬奥会网络安全是哪家公司
重庆网络技术分类设计
中职数据库应用基础课程目标
软件开发需求文档业务流程图
青山软件开发公司
红米9a怎么连接数据库
软件开发人员在软件测试阶段
php使用豆瓣数据库
服务器运维安全
打电话为什么会显示服务器故障
下载商丘市网络安全课堂
颍州区网络安全和信息化中心
网络安全专项清理整治责任书
小米5x的软件开发者
潍坊网络技术招聘