scala正则匹配

N.1 匹配的基本用法

表达式

匹配规则

^

匹配输入字符串开始的位置。

$

匹配输入字符串结尾的位置。

.

匹配除"\r\n"之外的任何单个字符。

[...]

字符集。匹配包含的任一字符。

[^...]

反向字符集。匹配未包含的任何字符。

test*

重复前面字符零次或更多次

test+

重复前面字符一次或更多次

test?

重复前面字符零次或一次

package tmp

import scala.util.matching.Regex

object Test {

def main(args: Array[String]): Unit = {

main1

}

// findFirstIn 和findAllIn 用法 ( str.matches()也可以用哪个 但是 测试发现 好像有时候有效 有时候无效,但matches匹配是返回booble类型的

def main1() {

val pattern1 = "(S|s)cala".r // 用.r 创建表达式

val pattern2 = new Regex("(S|s)cala") // 或用用Regex创建表达式

val str = "Scala1 is Scalable and cool Scala"

println((pattern1 findAllIn str).mkString(",")) // 使用逗号 , 连接返回结果 //运行结果Scala,Scala

}

// replaceFirstIn或str.replaceFirst方法来替换第一个匹配项。 replaceAllIn或str.replaceAll 替换是替换所有

def main2() {

val pattern = "(S|s)cala".r

val str = "Scala is scalable and cool"

println(pattern replaceFirstIn(str, "Java")) // 运行结果Java is scalable and cool

println(str.replaceFirst("(S|s)cala","Java")) //写法二

}

// 正则表达式的语法

def main3() {

// 字符集合的匹配

val pattern0 = "sc[b,c,a,d]la".r // 如scala 注意表达式的这里的字母是小写字符串里面的大小写是有区分的

val pattern1 = "sc[bcad]la".r // 和pattern0的作用是一样的

// 非开头匹配

val pattern2 = "sc[^bcad]la".r // 不能是scbla 或 scala 或 scala

val pattern3 = "Sc[^A-Za-z]la".r // 不能是A-Z或a-z的字母范围

// 涉及转义符号

val pattern4 = "Sc\\.la".r // 如果字符串里面有点 你可以使用\\. 来转义

val pattern5 = "Sc[\\.]la".r // 可以加中括号也可以不加中括号

val pattern6 = "Sc\\*la".r // 如果字符串里面有* 你可以使用\\* 来转义

// 字符串包括空格的情况

val pattern7 = "huangman tao".r // 字符串里面支持空格

val pattern8 = "yes[\\s]kk".r // \\s 表示‘一’空格键 或 tab键 或一个换行键

val pattern9 = "yes\\skk".r // 可以加中括号 也可以不加中括号

// 控制匹配次数

val pattern10 = "test{3}".r // 相当于"testtt".r 的写法。只能匹配3遍

val pattern11 = "test{3,5}".r // {3,5} 表示 范围 3个或4个或5个

// 匹配无限次

val pattern12 = "yes*".r // s可以有用无数个

val pattern13 = "yes.".r // s可以只能有一个 如yess,yesa,yesb,yes

// 匹配情况或的写法

val pattern14 = "yes[a|b|c]".r // yes后面必须要有a 或 b 或c

val pattern15 = "yes(a|b|c)".r // 和pattern9的写法是一样的 这个可以用小括号

// 大范围匹配情况

val pattern16 = "max[\\w]*".r // \\w表示数字或字母或下划线(没有包括小数点或汉字) 如 max124as,max1234,max124,maxaava

val pattern17 = "max\\w*".r // 可以加中括号也可以不加中括号

val pattern18 = "max[\\w|.]*".r // 上面不包括小数点 我们这里加个小数情况如结果成 如 max124as,max1234,max124,maxaava max124as,max1234.124abc,max124.1,maxaava.254

val str = "Scala is scalable and coolSc*la max124as你f1_41 sac.la Sc.la huangman tao testttt test testtttttttt yessss124 yesa yesb yes kk aAA max1234.124abc max124.1 maxaava.254"

println( (pattern16 findAllIn str).mkString(",")) // 运行结果Java is scalable and cool

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

研发咨询顾问

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值