[Scala]Scala学习笔记七 正则表达式
1. Regex对象
我们可以使用scala.util.matching.Regex
类使用正则表达式.要构造一个Regex对象,使用String类的r方法即可:
val numPattern = "[0-9]+".r
如果正则表达式包含反斜杠或引号的话,那么最好使用"原始"字符串语法"""..."""
:
val positiveNumPattern = """^[1-9]\d*$"""
如果在Java中使用上述正则表达式,则应该使用下面方式(需要进行转义):
val positiveNumPattern = "^[1-9]\\d*$"
相对于在Java中的使用方式,Scala这种写法可能更易读一些.
2. findAllIn
findAllIn方法返回遍历所有匹配项的迭代器.可以在for循环中使用它:
val str = "a b 27 c 6 d 1"
val numPattern = "[0-9]+".r
for(matchingStr <- numPattern.findAllIn(str)){
println(matchingStr)
}
或者将迭代器转成数组:
val str = "a b 27 c 6 d 1"
val numPattern = "[0-9]+".r
val matches = numPattern.findAllIn(str).toArray
// Array(27,6,1)
3. findPrefixOf
检查某个字符串的前缀是否能匹配,可以使用findPrefixOf方法:
val str = "3 a b 27 c 6 d 1"
val str2 = "a b 27 c 6 d 1"
val numPattern = "[0-9]+".r
val matches = numPattern.findPrefixOf(str)
val matches2 = numPattern.findPrefixOf(str2)
println(matches) // Some(3)
println(matches2) // None
4. replaceFirstIn replaceAllIn
可以使用如下命令替换第一个匹配项或者替换全部匹配项:
val str = "3 a b 27 c 6 d 1"
val numPattern = "[0-9]+".r
val matches = numPattern.replaceFirstIn(str, "*")
val matches2 = numPattern.replaceAllIn(str, "*")
println(matches) // * a b 27 c 6 d 1
println(matches2) // * a b * c * d *
5. 正则表达式组
分组可以让我们方便的获取正则表达式的子表达式.在你想要提取的子表达式两侧加上圆括号:
val str = "3 a"
val numPattern = "([0-9]+) ([a-z]+)".r
val numPattern(num, letter) = str
println(num) // 3
println(letter) // a
上述代码将num设置为3,letter设置为a
如果想从多个匹配项中提取分组内容,可以使用如下命令:
val str = "3 a b c 4 f"
val numPattern = "([0-9]+) ([a-z]+)".r
for(numPattern(num, letter) <- numPattern.findAllIn(str)){
println(num + "---"+letter)
}
// 3---a
// 4---f
[Scala]Scala学习笔记七 正则表达式的更多相关文章
- Scala入门学习笔记三--数组使用
前言 本篇主要讲Scala的Array.BufferArray.List,更多教程请参考:Scala教程 本篇知识点概括 若长度固定则使用Array,若长度可能有 变化则使用ArrayBuffer 提 ...
- (转)Qt Model/View 学习笔记 (七)——Delegate类
Qt Model/View 学习笔记 (七) Delegate 类 概念 与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件.一般来讲, view负责把数据展示 给用户,也 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
- Typescript 学习笔记七:泛型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- python3.4学习笔记(七) 学习网站博客推荐
python3.4学习笔记(七) 学习网站博客推荐 深入 Python 3http://sebug.net/paper/books/dive-into-python3/<深入 Python 3& ...
- Go语言学习笔记七: 函数
Go语言学习笔记七: 函数 Go语言有函数还有方法,神奇不.这有点像python了. 函数定义 func function_name( [parameter list] ) [return_types ...
- iOS 学习笔记七 【博爱手把手教你使用2016年gitHub Mac客户端】
iOS 学习笔记七 [博爱手把手教你使用gitHub客户端] 第一步:首先下载git客户端 链接:https://desktop.github.com 第二步:fork 大神的代码[这里以我的代码为例 ...
- 【opencv学习笔记七】访问图像中的像素与图像亮度对比度调整
今天我们来看一下如何访问图像的像素,以及如何改变图像的亮度与对比度. 在之前我们先来看一下图像矩阵数据的排列方式.我们以一个简单的矩阵来说明: 对单通道图像排列如下: 对于双通道图像排列如下: 那么对 ...
- Linux学习笔记(七) 查询系统
1.查看命令 (1)man 可以使用 man 命令名称 命令查看某个命令的详细用法,其显示的内容如下: NAME:命令名称 SYNOPSIS:语法 DESCRIPTION:说明 OPTIONS:选项 ...
随机推荐
- ros 编译指定包
一.编译到devel目录在工作空间下(有devel文件夹的那个目录)执行 catkin_make --pkg 包名 如果报错,执行catkin_make -DCATKIN_WHITELIST_PACK ...
- Phpstorm配置scss不生成缓存
--no-cache 加上这个,就不会生成 .sass-cache 文件夹了.
- Redis 安装到linux系统
下载地址 : http://download.redis.io/releases/redis-3.0.3.tar.gz ). tar -zxvf redis-.tar.gz -C /usr/share ...
- Python mysql-表中数据的大量插入
2017-09-06 23:28:26 import pymysql db = pymysql.connect("localhost","root"," ...
- Java checked 异常 和 RuntimeException(运行时异常)
目录 一.运行时异常 1.什么是RuntimeExceptioin 2.运行时异常的特点 3.如何运用运行时异常 二.运行时异常和ckecked异常的区别 1.机制上 2.逻辑上 一.运行时异常 1. ...
- spring-cloud: eureka之:ribbon负载均衡自定义配置(二)
spring-cloud: eureka之:ribbon负载均衡自定义配置(二) 有默认配置的话基本上就是轮询接口,现在我们改用自定义配置,同时支持:轮询,随机接口读取 准备工作: 1.eureka服 ...
- codeforces 497c//Distributing Parts// Codeforces Round #283(Div. 1)
题意:有n个区间[ai,bi],然后有n个人落在[ci,di],每个人能用ki次.问一种方式站满n个区间. 两种区间都用先x后y的升序排序.对于当前的区间[ai,bi],将ci值小于当前ai的全部放入 ...
- Java基础-面向对象(08)
面向过程 完成一个需求的步骤:首先是搞清楚我们要做什么,然后在分析怎么做,最后我们再代码体现.一步一步去实现,而具体的每一步都需要我们去实现和操作.这些步骤相互调用和协作,完成我们的需求.面向过程开发 ...
- python-day38--IO模型
一. IO模型介绍 对于一个网络通信,IO涉及到两个阶段 1.操作系统等数据来 2.进程或线程等操作系统拷贝数据 记住这两点很重要,因为这些IO模型的区别就是在两个阶段上各有不同的情况. 二.阻塞IO ...
- xhost + 的作用
xhost 是用来控制X server访问权限的. 通常当你从hostA登陆到hostB上运行hostB上的应用程序时, 做为应用程序来说,hostA是client,但是作为图形来说, 是在hostA ...