14-Groovy-正则表达式

简介: 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')
}

相关文章
|
9月前
|
JavaScript Java 索引
Java 正则表达式【基本语法】
Java 正则表达式【基本语法】
|
4月前
|
移动开发 Java Windows
Java 匹配\r 和 \n 的正则表达式如何编写
【10月更文挑战第19天】Java 匹配\r 和 \n 的正则表达式如何编写
273 3
|
9月前
|
JavaScript 前端开发 索引
JavaScript中的正则表达式:使用与模式匹配
【4月更文挑战第22天】本文介绍了JavaScript中的正则表达式及其模式匹配,包括字面量和构造函数定义方式,以及`test()`、`match()`、`search()`和`replace()`等匹配方法。正则表达式由元字符(如`.`、`*`、`[]`)和标志(如`g`、`i`)组成,用于定义搜索模式。文中还分享了正则使用的技巧,如模式分解、非捕获分组和注释。掌握正则表达式能提升文本处理的效率和代码质量。
|
9月前
|
Java 计算机视觉
【Java 正则表达式】简单用法,注意点,我学不会正则
【Java 正则表达式】简单用法,注意点,我学不会正则
|
Java
Groovy - 操作符之 “<<”
Groovy - 操作符之 “<<”
230 0
|
Java Unix API
Kotlin:正则Regex原来这么方便
Regex相对于Java的Api来说,使用起来更加的简单,如果大家在非正则的功能使用时,比如寻找,替换,是否包含等等,完全可以使用字符串自带的功能即可,如果说要实现一些较为复杂的,比如邮箱的验证,手机号的验证等等,那么Regex绝对是你的首选。
350 0
Kotlin:正则Regex原来这么方便
Java处理正则表达式特殊字符转义
正则需要转义字符:'$', '(', ')', '*', '+', '.', '[', ']', '?', '\\', '^', '{', '}', '|' 异常现象: java.util.regex.PatternSyntaxException: Dangling meta. character '*' near index 0 解决方法: 对特殊字符加\\转义即可。
5481 0
|
JavaScript 前端开发
JavaScript中 正则表达式的使用 及 常用正则表达式
JavaScript中 正则表达式的使用 及 常用正则表达式
106 0
【Groovy】字符串 ( 字符串拼接 | 多行字符串 )
【Groovy】字符串 ( 字符串拼接 | 多行字符串 )
533 0
【Groovy】字符串 ( 字符串拼接 | 多行字符串 )