如何检查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中的模式匹配的主要内容,如果未能解决你的问题,请参考以下文章

如何检查 String 对象是不是是链接? [复制]

检查字符串是不是与python中的IP地址模式匹配?

c_cpp 编写一个函数来检查给定字符串是否与给定模式匹配为非连续子字符串:即,模式中的所有字符

检查目录是不是存在并计算与其中模式匹配的文件[重复]

如何检查字符串是不是与 node.js 中的任何正则表达式数组匹配?

Spring Boot如何在更新前检查数据库中的编码密码是不是与表单中的密码匹配