繁体   English   中英

带连字符的Groovy正则表达式不匹配

[英]Groovy regex with hyphen isn't matching

我想编写一个正则表达式,该表达式将在任何给定字符串中遇到子字符串“ my-app”的任何时间匹配。

我有以下Groovy代码:

String regex = ".*my-app*"
String str = getStringFromUserInput()
if(str.matches(regex) {
    println "Match!"
} else {
    println "Doesn't match..."
}

getStringFromUserInput()返回类似“ blahmy-appfizz ”的字符串时,上面的代码仍报告Doesn't match... 因此,我认为连字符必须是正则表达式中的特殊字符,并尝试将正则表达式更改为:

String regex = ".*my--app*"

但是仍然没有任何改变。 关于我要去哪儿有什么想法吗?

连字符不是特殊字符。

matches验证整个输入。 尝试:

String regex = ".*my-app.*"

请注意, p*匹配零个或多个p ,而p.*匹配p后跟零个或多个char(换行符除外)。

假设getStringFromUserInput()在输入中不保留任何换行符。 在这种情况下,您需要执行trim()来摆脱它,因为.*与换行符不匹配。

与正则表达式相比, String.contains似乎是一个更简单的解决方案,例如

String stringFromUser = 'my-app'
assert 'foomy-appfoo'.contains(stringFromUser)
assert !'foo'.contains(stringFromUser)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM