如何在Groovy中检查字符串是否符合某种模式?我的模式是“somedata:somedata:somedata”,我想要检查是否遵循了这种字符串格式。基本上,冒号是分隔符。
Groovy正则表达式有一个==~
运算符,可以确定您的字符串是否与给定的正则表达式模式匹配。
// ==~ tests, if String matches the pattern
assert "2009" ==~ /\d+/ // returns TRUE
assert "holla" ==~ /\d+/ // returns FALSE
使用这个工具,你可以创建一个正则表达式匹配器来处理你的样本数据,代码如下:
// 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
http://docs.groovy-lang.org/latest/html/documentation/#_match_operator
String regex = /^somedata(:somedata)*$/
assert !('somedata;somedata;somedata' ==~ regex) // assert success!
尝试使用正则表达式,例如.+:.+:.+
。
import java.util.regex.Matcher
import java.util.regex.Pattern
def match = "somedata:somedata:somedata" ==~ /.+:.+:.+/
我使用以下方法解决了这个问题:
myString.matches("\S+:\S+:\S+")
assert !("somedata:xxxxxxxx:somedata" ==~ regex)
。!=~
不是一个有效的操作符来否定正则表达式匹配:https://groovy-lang.org/operators.html#_regular_expression_operators - Joman68