scala中的正则表达式

正则表达式是一种针对于字符串的操作,主要功能有匹配、切割、替换和获取的作用,在Scala中正则也是被频繁使用的方法(regex.r表示为正则表达式)

正则表达式(Regular Expression)是一种用于匹配.查找和替换文本中特定的字符串。

创建正则表达式对象

在 Scala 中,可以使用java.util.regex.Pattern类来创建正则表达式对象

import java.util.regex.Pattern
val pattern = Pattern.compile("abc")

使用Matcher进行匹配操作

接着,可以使用Matcher类来对字符串进行匹配操作。

import java.util.regex.Matcher
val matcher = pattern.matcher("abcdef")
val isMatch = matcher.find()
println(isMatch)

Scala 特有的正则表达式操作方式

使用r方法

Scala 提供了一种更简洁的方式来处理正则表达式。可以使用字符串的r方法将字符串转换为正则表达式。

val regex = "abc".r
val str = "abcdef"
val isMatch = regex.findFirstIn(str).isDefined
println(isMatch)

提取匹配的组

当正则表达式中有分组时,可以方便地提取匹配的组。

在 Scala 中使用正则表达式进行替换操作

使用replaceAllreplaceFirst

Scala 的String类提供了replaceAllreplaceFirst方法,可以方便地进行正则表达式替换操作。

val originalString = "abc123abc456"
val replacedString = originalString.replaceAll("abc", "XYZ")
println(replacedString)
能匹配很多规则的字符
方括号[]用于定义字符类。方括号 [] 在正则表达式中用于定义字符集,匹配方括号内的任意一个字符。
在 Scala 正则表达式中,排除字符类是一种特殊的字符类定义方式,用于匹配除了字符类中指定字符之外的其他字符。它通过在方括号[]的开头添加^符号来表示。
1. .表示,除了换行之外的其他的任意单个字符
2. \d等于[0-9]匹配一个数字 digit
3 \D 除了\d之外的其他的热门一字符。表示非数字
4.\w等价于[0-9A-Za-z_]63个字符,表示一个字word
5.\W除了\w之外任意的字符。表示非字
6.\s表示一个空格 space
7.\S表示一个非空格
package test36

object test {
  def main(args: Array[String]): Unit = {
    //定义一个规则,正则表达式
//    val reg ="[a-zA-Z0-9]".r
//    val reg ="^a$".r
//    val reg ="[^ab]".r  //放在[]前面是排除

    //1. .表示,除了换行之外的其他的任意单个字符
    //2. \d等于[0-9]匹配一个数字 digit
    //3 \D 除了\d之外的其他的热门一字符。表示非数字
    //4.\w等价于[0-9A-Za-z_]63个字符,表示一个字word
    //5.\W除了\w之外任意的字符。表示非字
    //6.\s表示一个空格 space
    // 7.\S表示一个非空格

    //val reg = ".".r
     val reg = "\\S".r
    //1.查找。在目标字符串中,找到符合正则表达式规则要求的 字串
//    val rs = reg.findFirstIn("abc")
//    if(!rs.isEmpty){
//      println("你找到的,符合正则表达式规则要求的内容是:",rs.get)
//    }
    reg.findAllIn("_Ai 1234am a12 no,y3es,ok").toList.foreach(println)
  }

}

Scala正则表达式的量词

1.{n,m}把前面的字符匹配最少n次,最多m次

2.{n, }把前面的字符匹配最少n次,最多不限

3.{n}把前面的字符匹配最少n次

4. ? ===>{0,1}    把前面的字符匹配0次,或者1次

5. ? ===>{1   }    把前面的字符匹配最少1次

6. ? ===>{0, }    把前面的字符匹配0次,或者多次

package test36

object test0 {
  def main(args: Array[String]): Unit = {
    //规则1.有11个数字
    //规则2.开头是1
    //规则3.第二位是3-9数字
    var reg = "1[3-9]\\d{9}".r
    reg.findAllIn("1234567890  13a12335678 13812345678 and 10987654321 are phone numbers").toList.foreach(println)
  }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值