2 回答
TA贡献1788条经验 获得超4个赞
看起来您基本上想\.*在字符串的字符之间插入(零个或多个句点)。例如"c.at","c.a.t"和"c.a..t"都由表达式匹配^\.*c\.*a\.*t\.*$。
这可以使用类似的函数来完成(不是最有效的......):
func randomDots(word string) string {
dots := "\\.*"
expression := fmt.Sprintf("^%s", dots)
for i := range word {
expression += fmt.Sprintf("%c%s", word[i], dots)
}
expression += "$"
return expression
}
然后你可以HasBadPattern改为:
func HasBadPattern(word string, patterns []string) bool {
for _, p := range patterns {
expression := randomDots(p)
myRegex, _ := regexp.Compile(expression)
matched := myRegex.FindString(word)
if len(matched) > 0 {
return true
}
}
return false
}
TA贡献2021条经验 获得超8个赞
匹配猫的情况。尝试遵循正则表达式。
您的正则表达式实现在 golang 中可能有所不同,我使用https://regexr.com对其进行了测试,它工作正常。引用点特殊字符也可能是一个好主意。
c[.]{0,}[.]a[.]{0,}[.]?t
它通过了你的测试用例。
如果您想匹配鱼或其他单词,那么您将动态地创建另一个正则表达式。
玩得开心!
- 2 回答
- 0 关注
- 134 浏览
添加回答
举报