我想编写一个正则表达式,它会在任何给定字符串中遇到子字符串“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*"
但仍然没有改变。关于我哪里出错的任何想法?
答案 0 :(得分:1)
连字符不是特殊字符。
matches
验证整个输入。尝试:
String regex = ".*my-app.*"
请注意,p*
匹配零个或多个p
&p.*
匹配p
后跟零个或多个字符(除了换行符)。
假设getStringFromUserInput()
未在输入中留下任何换行符。在这种情况下,您需要执行trim()
来摆脱它,因为.*
与换行符不匹配。
答案 1 :(得分:1)
String.contains
似乎比正则表达式更简单,例如
String stringFromUser = 'my-app'
assert 'foomy-appfoo'.contains(stringFromUser)
assert !'foo'.contains(stringFromUser)