14-Groovy-正则表达式


前言

  • 本篇来学习Groovy正则表达式

正则表达式

  • 正则表达式是用于在文本中查找子字符串的模式。 Groovy 使用~ 来支持表达式。Groovy也支持“=~”(创建一个Matcher)和 “==~” (返回boolean,是否给定的字符串匹配这个pattern)操作符
  • 当定义正则表达式时,可以使用以下特殊字符
    • 有两个特殊的位置字符用于表示一行的开始和结束:caret(∧)和美元符号($)。
    • 正则表达式也可以包括量词。加号(+)表示一次或多次,应用于表达式的前一个元素。星号(*)用于表示零个或多个出现。问号(?)表示零或一次。
    • 元字符{和}用于匹配前一个字符的特定数量的实例。
    • 在正则表达式中,句点符号(。)可以表示任何字符。这被描述为通配符。
    • 正则表达式可以包括字符类。一组字符可以作为简单的字符序列,包含在元字符[和]中,如[aeiou]中。对于字母或数字范围,可以使用[a-z]或[a-mA-M]中的短划线分隔符。字符类的补码由方括号内的前导插入符号表示,如[∧a-z]中所示,并表示除指定的字符以外的所有字符。
语法示例
'Groovy' =~ 'Groovy' 
'Groovy' =~ 'oo' 
'Groovy' ==~ 'Groovy' 
'Groovy' ==~ 'oo' 
'Groovy' =~ '^G' 
'Groovy' =~ 'G$' 
'Groovy' =~ 'Gro*vy' 'Groovy' =~ 'Gro{2}vy'

实际例子

// ~ 和= 之间有一个空格, 因为Groovy中存在=~ 操作符号
def reg1 = ~'he*llo'
def reg2 = /he*llo/
println "reg1 type is ${reg1.class}"  // Pattern类型
println "reg2 type is ${reg2.class}"  // String类型
println "hello".matches(reg1)
println "hello".matches(reg2)
def val1 = "hello" =~ "he*llo"
println val1.class   //  Matcher 对象
println val1.matches()  // true

// 简写
def val2 = "hello" ==~ "he*llo"
println val2.class  // Boolean
println val2       // true
  • 如果在构建正则表达式字符串的时候, 使用双引号表示字符串,就需要使用\ 来表示单斜线,比如:
def reg3 = "hello \\w*"
def reg4 = /hello \w*/
println "hello world" ==~ reg3
println "hello world" ==~ reg4
def reg6 = ~/h(el)(lo)/
def str6 = 'hello world hello nihao'
def matcher6 = str6=~reg6
println "first matched substring"
println matcher6[0]
println matcher6[0][0]
println matcher6[0][1]
println matcher6[0][2]
println matcher6.group(0)
println matcher6.group(1)
println matcher6.group(2)
def reg8 = /el/
def str8 = "hello world hello"
def matcher8 = str8=~reg8
while(matcher8.find()){
    println matcher8.group()
}
matcher8.reset()
println "reset the matcher"
while(matcher8.find()){
    println matcher8.group()
}
def compile = ~'^Gro{2}vy'
def branch = 'Groovy'
def res = "${branch}" ==~ compile
println("${res}")
if (res){
    println('结果为true')
}else {
    println('结果为false')
}
Groovy是一种基于JVM的敏捷开发语言,它在Java的基础上添加了许多有用的特性,其中包括对正则表达式的支持。Groovy正则表达式功能非常强大,并且使用起来非常简洁。 在Groovy中使用正则表达式与在Java中有所不同,Groovy提供了更加流畅的语法。以下是一些Groovy正则表达式的特点和用法: 1. 字符串的`findAll`和`find`方法可以用来查找匹配正则表达式的子字符串。 - `findAll`方法返回所有匹配的子字符串列表。 - `find`方法返回第一个匹配的子字符串。 2. 使用`~`操作符可以创建一个`Pattern`对象,允许你直接使用正则表达式语法。 3. Groovy中的正则表达式支持原生字符串,意味着你可以直接写正则表达式而不需要转义。 4. 在Groovy正则表达式中,可以使用`~>`和`<~`来分别表示正向和反向查找。 5. 在正则表达式后可以添加`as`子句来指定匹配到的数据应该被解析为特定类型的列表。 6. 可以直接对字符串应用正则表达式模式匹配,并且匹配结果会自动被解包为相应的变量。 下面是一些Groovy正则表达式的简单示例: ```groovy // 查找字符串中所有匹配的数字 def text = "Here are numbers: 123, 456, 789." def numbers = text.findAll(/\d+/) println numbers // 输出: [123, 456, 789] // 使用正则表达式匹配并解析数据 def result = text =~ /(\d+)/ result.each { println it[0] } // 使用as子句解析匹配结果为整数列表 def numbersParsed = text.findAll(/\d+/) as List<Integer> println numbersParsed ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱学习de测试小白

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

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

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

打赏作者

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

抵扣说明:

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

余额充值