如何检查String是否与Groovy中的模式匹配

kic*_*cks 19 java groovy

如何检查字符串是否与groovy中的模式匹配?我的模式是"somedata:somedata:somedata",我想检查是否遵循了这种字符串格式.基本上,冒号是分隔符.

Nic*_*aly 27

Groovy正则表达式有一个==~运算符,用于确定您的字符串是否与给定的正则表达式模式匹配.

// ==~ tests, if String matches the pattern
assert "2009" ==~ /\d+/  // returns TRUE
assert "holla" ==~ /\d+/ // returns FALSE
Run Code Online (Sandbox Code Playgroud)

使用此方法,您可以为样本数据创建一个正则表达式匹配器,如下所示:

// match 'somedata', followed by 0-N instances of ':somedata'...
String regex = /^somedata(:somedata)*$/

// assert matches...
assert "somedata" ==~ regex
assert "somedata:somedata" ==~ regex
assert "somedata:somedata:somedata" ==~ regex

// assert not matches...
assert "somedata:xxxxxx:somedata" !=~ regex
assert "somedata;somedata;somedata" !=~ regex
Run Code Online (Sandbox Code Playgroud)

在这里阅读更多相关信息:

http://docs.groovy-lang.org/latest/html/documentation/#_match_operator

  • 旧的 groovy.codehouse.org 站点已过期。试试这个:http://docs.groovy-lang.org/latest/html/documentation/#_regular_expression_operators (2认同)

小智 5

Groovy 中的否定正则表达式匹配应该是

 String regex = /^somedata(:somedata)*$/   
 assert !('somedata;somedata;somedata' ==~ regex)  // assert success!
Run Code Online (Sandbox Code Playgroud)


can*_*tas 4

尝试使用正则表达式,例如.+:.+:.+.

import java.util.regex.Matcher
import java.util.regex.Pattern

def match = "somedata:somedata:somedata" ==~ /.+:.+:.+/
Run Code Online (Sandbox Code Playgroud)