Scala中的正则表达式、与模式匹配结合的的Reg代码实战

内容:

1、正则表达式代码

2、与模式匹配结合的reg代码实战

   与正则表达式相关的类是scala.util.matching.Regex类。要构造一个Regex对象,使用String类的r方法即可(.r)。如果正则表达式中包含反斜杠或引号之类的需要转义的字符,那么最好是使用原始(raw)字符串,以三个”号包围。


2

val numPattern = "[0-9]+".r

val wsnumwsPattern = """\s+[0-9]+\s+""".r

1

2

3

4

5

6

7

// findAllIn方法返回遍历所有匹配项的迭代器

for (matchString <- numPattern.findAllIn("99 bottles, 98 bottles"))

 

// 找到首个匹配项

val m1 = wsnumwsPattern.findFirstIn("99 bottles, 98 bottles")

// 返回Some(" 98 ")

// findFirstIn方法返回Option[String]

//以上findAllIn方法为找到匹配的内容并附给matchString

findPrefixOf方法检查某个字符串的开始部分是否能够匹配。可以用相应的replace方法来替换掉匹配的部分。

   分组使得获取正则表达式的子表达式更加方便。在想要提取的子表达式两侧加上圆括号

1

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

//匹配组将正则表达式对象当做“提取器”来使用:

1

2

val numitemPattern(num, item) = "99 bottles"

// num被赋值为"99"item被赋值为"bottles"


    println(numberPattern.findFirstIn("99ss java, 222 hadoop"))	
    val numitemPattern="""([0-9]+) ([a-z]+)""".r

    val numitemPattern(num, item) = "99 hadoop"    
    val line = "93s459 spark"
    line match{
      case numitemPattern(num, blog) => println(num + "\t" + blog)
      case _ => println("Oops...")
    }

匹配numitemPattern中的数字和字符串将匹配结果中数字附给num,字符串赋给blog然后打印。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值