Groovy正则表达式语法
Groovy中的正则表达式本质上还是会使用到JDK中的java.lang.regex
包中的class
一些简单的正则表达式:
def reg1 = ~'he*llo'
def reg2 = /he*llo/
println "reg1 type is ${reg1.class}"
println "reg2 type is ${reg2.class}"
println "hello".matches(reg1)
println "hello".matches(reg2)
运行结果:
reg1 type is class java.util.regex.Pattern
reg2 type is class java.lang.String
true
true
上式中使用了~
+ 字符串(以及双/
分隔符模式)的方式定义了一个正则表达式
- 注:在groovy中
=~
是查询操作符,使用在字符串之后, 要求接一个正则表达式, 返回的是一个java.util.regex.Matcher
对象
def val1 = "hello" =~ "he*llo"
println val1.class
print val1.matches()
//class java.util.regex.Matcher
//true
- 注:在groovy中
==~
是匹配操作符,使用在字符串之后, 要求接一个正则表达式, 返回的类型为Boolean
类型. 这个操作符要求前面给定的字符串与后面的正则表达式完全匹配才可返回true
def val1 = "hello" ==~ "he*llo"
println val1.class
print val1
//class java.lang.Boolean
//true
原字符问题
正则表达式中存在一些特殊的字符(比如\w
表示的是[a-zA-Z0-9]
)用于文本的匹配,这些字符一般是以\
开头, 所以这个地方涉及到了转义字符问题。 举个例子:
def val1 = "test value"
println 'value is ${val1}'
println "value is ${val1}"
//value is ${val1}
//value is test value
- 如果在构建正则表达式字符串的时候,使用
""
表示字符串,就需要使用\\
来表示\
,比如: