「Groovy」- 使用正则表达式

更新日期:2020年05月27日

java.util.regex.Pattern

使用 ~string 即可定义 java.util.regex.Pattern 对象,例如 ~"[Gg]roovy" 或者 ~/[Gg]roovy/ 格式

java.util.regex.Matcher

使用 =~ 即可定义 java.util.regex.Matcher 对象:

def pattern = ~/\S+er\b/
def matcher = "My code is groovier and better when I use Groovy there" =~ pattern
assert matcher instanceof java.util.regex.Matcher

// 或者
def matcher = "My code is groovier and better when I use Groovy there" =~ /\S+er\b/
assert matcher instanceof java.util.regex.Matcher

判断是否包含某个字符串

使用 =~ 操作符

if ("My code is groovier and better when I use Groovy there" =~ /\S+er\b/) {
    println "At least one element matches the pattern..."
}

使用 ==~ 操作符

if ("My code is groovier and better when I use Groovy there" ==~ /\S+er\b/) {
    println "At least one element matches the pattern..."
}

对比两种方式

前者,在 if 语句中的是 Matcher 对象,只检查字符串是否包含与 Matcher 对象匹配的内容
后者,在 if 语句中的是 Boolean 对象,可类比于调用 matcher.matches() 方法,进行严格匹配

找到所有匹配元素

def text = """ 
This text contains some numbers like 1024
or 256. Some of them are odd (like 3) or
even (like 2).
"""

def result = (text =~ /\d+/).findAll()

assert result == ["1024", "256", "3", "2"] 

参考文献


ToC

java.util.regex.Pattern

java.util.regex.Matcher

判断是否包含某个字符串

使用 =~ 操作符

使用 ==~ 操作符

对比两种方式

找到所有匹配元素

参考文献