java正则匹配英文句号_Scala 正则表达式 0411

b580a4bdc41c6b8ea859e73a03e3e2d4.png

Scala 正则表达式

Scala 通过 scala.util.matching 包中的 Regex 类来支持正则表达式。以下实例演示了使用正则表达式查找单词 Scala :

import scala.util.matching.Regexobject Test {def main(args: Array[String]) {val pattern = "Scala".rval str = "Scala is Scalable and cool"println(pattern findFirstIn str)}
}

执行以上代码,输出结果为:

$ scalac Test.scala 
$ scala Test
Some(Scala)

实例中使用 String 类的 r() 方法构造了一个Regex对象。

然后使用 findFirstIn 方法找到首个匹配项。

如果需要查看所有的匹配项可以使用 findAllIn 方法。

你可以使用 mkString( ) 方法来连接正则表达式匹配结果的字符串,并可以使用管道(|)来设置不同的模式:

import scala.util.matching.Regexobject Test {def main(args: Array[String]) {val pattern = new Regex("(S|s)cala")  // 首字母可以是大写 S 或小写 sval str = "Scala is scalable and cool"println((pattern findAllIn str).mkString(","))   // 使用逗号 , 连接返回结果}
}

执行以上代码,输出结果为:

$ scalac Test.scala 
$ scala Test
Scala,scala

如果你需要将匹配的文本替换为指定的关键词,可以使用 replaceFirstIn( ) 方法来替换第一个匹配项,使用 replaceAllIn( ) 方法替换所有匹配项,实例如下:

object Test {def main(args: Array[String]) {val pattern = "(S|s)cala".rval str = "Scala is scalable and cool"println(pattern replaceFirstIn(str, "Java"))}
}

执行以上代码,输出结果为:

$ scalac Test.scala 
$ scala Test
Java is scalable and cool

正则表达式

Scala 的正则表达式继承了 Java 的语法规则,Java 则大部分使用了 Perl 语言的规则。

下表我们给出了常用的一些正则表达式规则:

表达式匹配规则^匹配输入字符串开始的位置。$匹配输入字符串结尾的位置。.匹配除"rn"之外的任何单个字符。[...]字符集。匹配包含的任一字符。例如,"[abc]"匹配"plain"中的"a"。[^...]反向字符集。匹配未包含的任何字符。例如,"[^abc]"匹配"plain"中"p","l","i","n"。A匹配输入字符串开始的位置(无多行支持)z字符串结尾(类似$,但不受处理多行选项的影响)Z字符串结尾或行尾(不受处理多行选项的影响)re*重复零次或更多次re+重复一次或更多次re?重复零次或一次re{ n}重复n次re{ n,}re{ n, m}重复n到m次a|b匹配 a 或者 b(re)匹配 re,并捕获文本到自动命名的组里(?: re)匹配 re,不捕获匹配的文本,也不给此分组分配组号(?> re)贪婪子表达式w匹配字母或数字或下划线或汉字W匹配任意不是字母,数字,下划线,汉字的字符s匹配任意的空白符,相等于 [tnrf]S匹配任意不是空白符的字符d匹配数字,类似 [0-9]D匹配任意非数字的字符G当前搜索的开头n换行符b通常是单词分界位置,但如果在字符类里使用代表退格B匹配不是单词开头或结束的位置t制表符Q开始引号:Q(a+b)*3E可匹配文本 "(a+b)*3"。E结束引号:Q(a+b)*3E可匹配文本 "(a+b)*3"。

正则表达式实例

实例描述.匹配除"rn"之外的任何单个字符。[Rr]uby匹配 "Ruby" 或 "ruby"rub[ye]匹配 "ruby" 或 "rube"[aeiou]匹配小写字母 :aeiou[0-9]匹配任何数字,类似 [0123456789][a-z]匹配任何 ASCII 小写字母[A-Z]匹配任何 ASCII 大写字母[a-zA-Z0-9]匹配数字,大小写字母[^aeiou]匹配除了 aeiou 其他字符[^0-9]匹配除了数字的其他字符d匹配数字,类似: [0-9]D匹配非数字,类似: [^0-9]s匹配空格,类似: [ trnf]S匹配非空格,类似: [^ trnf]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 个数字。Dd+无分组: + 重复 d(Dd)+/分组: + 重复 Dd 对([Rr]uby(, )?)+匹配 "Ruby"、"Ruby, ruby, ruby",等等

注意上表中的每个字符使用了两个反斜线。这是因为在 Java 和 Scala 中字符串中的反斜线是转义字符。所以如果你要输出 ..,你需要在字符串中写成 .. 来获取一个反斜线。查看以下实例:

import scala.util.matching.Regexobject Test {def main(args: Array[String]) {val pattern = new Regex("abl[ae]d+")val str = "ablaw is able1 and cool"println((pattern findAllIn str).mkString(","))}
}

执行以上代码,输出结果为:

$ scalac Test.scala 
$ scala Test
able1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/499029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

撤销前进快捷键_电脑win7系统的快捷键大全

电脑在日常工作中经常需要使用到系统自带的快捷键,这样能够大大提高工作效率,比使用鼠标去点击查找方便省事多了,比如常用的复制(Ctrlc)粘贴(Ctrlv),今天就来给大家讲讲Windows系统的快捷键,可以说是快捷键大全啦。一、…

jedis依赖_SpringBoot整合Jedis实现redis缓存

我是一个java开发者,我的文章,没有华丽的言辞,没有666的版式,这些都是我自己工作中用到的解决方案,很多都是直接粘贴的源码,在这里与君分享。如果喜欢这里文章可以关注我,我回继续发的&#xff…

软件文档 服务器上,服务器上需要什么软件

服务器上需要什么软件 内容精选换一换华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。MindStudio所在的环境为开发环境,开发人员可以进…

服务器补丁 系统,操作系统补丁服务器

操作系统补丁服务器 内容精选换一换北京时间1月3日,Intel处理器芯片被曝出存在严重的Meltdown和Spectre安全漏洞,漏洞详情如下:漏洞名称:Intel处理器存在严重芯片级漏洞漏洞编号:CVE-2017-5753、CVE-2017-5715、CVE-20…

matlab 周立功can_隐藏在CAN协议底层的编码方式——到底是大端还是小端?

当我们想要讨论CAN协议底层发送到数据线上的二进制信号的编码方式时,最值得关注的两点是:字节编码(Endianness)和比特顺序(Bit Numbering)。先一句话揭晓答案:CAN协议的字节编码是大端编码&…

samba服务器新建文件权限,Ubuntu中安装samba服务器创建文件共享的方法及普通用户设置共享的问题解析...

Ubuntu中安装samba服务器创建文件共享的方法及普通用户设置共享的问题解析发布时间:2011-01-04 19:10:00 作者:佚名 我要评论本文是基于ubuntu桌面版进行操作说明的。前面的设置都是管理员进行的,这里说的管理员就是可以使用sudo命令&am…

flashpaper打印机没有被正确安装_没有正确保存与安装,可导致80%的轴承提早失效...

轴承损坏可谓司空见惯,可您是否知道,80%的轴承提早失效是因为没有正确地安装。轴承的正确安装,不仅可以增加轴承的使用寿命,降低成本,还可以大大提高生产效益。轴承安装与常规其他部件安装有很大区别,为了实…

rabbitmq实例_RabbitMQ不得不知道的点

RabbitMQ的优缺点优点这边的流量削峰功能主要应用在秒杀活动中,在秒杀活动中一般因为流量过大,导致应用挂掉,为了解决这个问题,在应用前端、库存系统前端加入消息队列,在订单系统中,服务器收到用户的请求后…

图片优化_网站里的图片应该如何优化

我们一直都在做网站关键词、内页关键词、标签等。但很多朋友都忽略了网站里的图片如何优化。近年来百度图片识别、360图片识别都在不断升级功能上已经很完善了,所以我们应该对网站图片进行优化,应该做seo的朋友们重视起来, 下面笔者跟大家分享…

rabbitmq 取消消息_mall整合RabbitMQ实现延迟消息

本文主要讲解mall整合RabbitMQ实现延迟消息的过程,以发送延迟消息取消超时订单为例。项目使用框架介绍RabbitMQRabbitMQ是一个被广泛使用的开源消息队列。它是轻量级且易于部署的,它能支持多种消息协议。RabbitMQ可以部署在分布式和联合配置中&#xff0…

vue 将行转换成对象_Vue简化版实现

Vue整体结构Vue: 把data中的成员注入到Vue实例,并且把data中的成员转换成getter, setterObserver: 劫持对象的所有属性, 如有变动可拿最新的值, 通知DepCompiler:解析每一个元素中的指令/插值表达式, 替换成相应的数据Dep: 发布者…

python 如何修改字典的key值_如何使用python技术完成数据集缺失值多种应用场景的滤除或填充?...

前言在数据处理的过程中,我们应该都有这样的体会,本质上数据处理与分析是相互协作,彼此成就的过程。比如,我们会用数据分析统计数据集中的缺失值、异常值,更直观的也会进阶到数据可视化的部分(到达该部分一般是成了文章…

python graphics 清空 图_【手把手教你】使用Python玩转金融时间序列模型

01引言上一篇推文【Python量化基础】时间序列的自相关性与平稳性着重介绍了时间序列的一些基础概念,包括自相关性、偏自相关性、白噪声和平稳性,以及Python的简单实现。本文在此基础上,以沪深300指数收益率数据为例,探讨如何使用P…

postman linux_Postman使用

postman简介官网https://learning.getpostman.com/用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具。今天给大家介绍的这款网页调试工具不仅可以调试简单的…

java与MySQL做购物系统_java Swing mysql实现简单的购物系统项目源码附带指导视频教程...

大家好,今天给大家演示一下由Java swing实现的一款简单的购物程序,数据库采用的是mysql,该项目非常简单,实现了管理员对商品类型和商品的管理及用户注册登录后浏览商品、加入购物车、购买商品等功能,旨在学习Java 图形…

mysql pdm_mysql 生成pdm

1.条件1.1 工具powerDesigner16.51.2 mysql数据库地址或脚本1.3 mysql-connector-odbc-5.3.4-winx64.msi2.操作步骤2.1 database > change DBMS 选择Mysql5.02.2 打开powerDesigner16.5工具, file > reverse Engineer > database确定,则生成对应的pdm.3.图形列表中展示…

java 调用htm中js函数_从 node.js Web应用中调用 WASM 函数 | WebAssembly 入门教程

文中所有的代码都可以在 https://github.com/second-state/wasm-learning/tree/master/nodejs/hello 中找到在之前的教程中,我们讨论了如何从 Web 浏览器中的 JavaScript 应用程序访问 WebAssembly 函数。WebAssembly 快问快答从 Rust 开始入门 WebAssembly | WebAs…

vba cad 读取宏的路径_openpyxl 第三篇 lt;工作表的读取和写入gt;

1、打开表格文件from openpyxl import load_workbook wb load_workbook(r"文件路径工作簿文件全名")2. 查看有哪些sheet页sheet_names wb.sheetnames print(sheet_names)3. 读取指定的sheet页sheet1 wb[指定工作表的名字]4.单元格的使用#写 sheet1.cell(row3,colu…

mysql 一致性读_MySQL半一致性读原理解析-从源码角度解析

1、什么是半一致性读A type of read operation used for UPDATE statements, that is a combination of read committed and consistent read. When an UPDATE statement examines a row that is already locked, InnoDB returns the latest committed version to MySQL so tha…

飞秋发送文件对方无法接收_微信新功能,发送高清图片和视频终于不会被压缩了...

今天,扎比从微博中刷到了腾讯微信团队的最新微博,称微信支持发送高清图片视频不被压缩,而且给好友发送的文件容量上限也变得更大了。发送教程一般情况下,我们使用微信给好友发视频和图片时都会被压缩。而今天扎比分享的是一个不会…