[英]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.