如何检查String是否与Groovy中的模式匹配
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检查String是否与Groovy中的模式匹配相关的知识,希望对你有一定的参考价值。
如何检查字符串是否与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
另一答案
尝试使用像.+:.+:.+
这样的正则表达式。
import java.util.regex.Matcher
import java.util.regex.Pattern
def match = "somedata:somedata:somedata" ==~ /.+:.+:.+/
另一答案
Groovy中的否定正则表达式匹配应该是
String regex = /^somedata(:somedata)*$/
assert !('somedata;somedata;somedata' ==~ regex) // assert success!
另一答案
能够使用以下方法解决此问题:
myString.matches( “ S +: S +: S +”)
以上是关于如何检查String是否与Groovy中的模式匹配的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 编写一个函数来检查给定字符串是否与给定模式匹配为非连续子字符串:即,模式中的所有字符