scala正規表示式

2021-10-09 14:43:04 字數 2495 閱讀 4869

scala中正規表示式的用法

正規表示式是一種針對於字串的操作,主要功能有匹配、切割、替換和提取的作用,在scala中正則也是被頻繁使用的方法(regex.r表示為正規表示式)

1、匹配

scala支援多種正規表示式解析,主要包括下面三種

string.matches

例1:

val s = "!123456"

println(s.matches("![a-za-z0-9]"))//true

println(s.matches("![a-za-z0-9]"))//false

執行結果:

true

false

正規表示式模式匹配

例2:

val b = """([a-z0-9]+)"""".r

"helloworld123" match

執行結果:

匹配成功
scala.util.matching.regex api

有三種匹配:

例3:

val reg ="[a-za-z0-9]+:[a-za-z0-9]+".r

val str = "name:zs,age:17"

//第一種:findfirstmatchin()返回第乙個匹配(option[match])

reg.findfirstmatchin(str) match

執行結果:

name:zs
例4:

val reg ="[a-za-z0-9]+:[a-za-z0-9]+".r

val str = "name:zs,age:17"

//第二種findallmatchin()返回所有匹配(regex.match)

println(reg.findallmatchin(str).tolist)//

執行結果:

list(name:zs, age:17)
例5:

val reg ="[a-za-z0-9]+:[a-za-z0-9]+".r

val str = "name:zs,age:17"

//第三種findallin()返回所有匹配結果(string)

println(reg.findallin(str).mkstring(","))

執行結果:

name:zs,age:17
2.提取分組

例6:

val reg ="([a-za-z0-9]+):([a-za-z0-9]+)".r

val str = "name:zs,age:17"

reg.findallmatchin(str).foreach(x=>println(x.group(1)))

// name

// age

val source = source.fromfile("path","utf-8")

val lines = source.getlines.toarray

val reg = """([a-z]+) ([0-9]-[0-9]-[0-9]) requesturi:(.*)""".r

//方法1

lines.map(line => reg.findallmatchin(line).tolist.map(x => (x.group(1),x.group(2),x.group(3)))).foreach(println)

//方法2

lines.map(line => line match)

//必須逐一匹配上,不然會報錯

3.替換

例7:

//replacefirstin

val a = """([0-9]+)""".r

a.replacefirstin("123,hello! world","run")

//replaceallin

val a = """([0-9]+)""".r

a.replaceallin("123 hello world!","come on!")

執行結果:

run,hello! world

come on! hello world

4.查詢

例8:

val date = """([0-9])-([0-9])-([0-9])""".r

"2020-09-18" match

"2020-09-18" match

執行結果:

2020

09

Scala正規表示式

在scala中,可以很方便地使用正規表示式來匹配資料。regex類 findallmatchin方法 示例說明 參考 val r r val eml1 qq12344 163.com val eml2 qq12344 com if r.findallmatchin eml1 size 0 else ...

scala正規表示式

案例演示 println 123 matches a za z0 9 false println 1123 matches a za z0 9 true 解析 建立正規表示式匹配規則 建立需要匹配的字元創物件 使用match進行規則匹配 案例演示 object regexdemo01 extends...

正規表示式 scala

表示分組,把某些連續的字元視為乙個整體對待 匹配一位字元,a z 匹配a到z中的一位字元,a z hk 這一位的字元不能是除h,k之外的任意的小寫字母 對前面的一位字元或者一組字元連續出現了m次 表示前面的一位或者一組字元連續出現了至少m次 表示前面的一位或者一組字元連續出現了至少m次,至多n次 表...