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次 表...