希望你们能帮助我。
我需要创建一个字符串,在满足以下条件时提醒我:
我在regex101上玩了一段时间,但我无法达到所有条件(条件4仍然缺失)。
您可以在以下链接中找到我所能做的: https://regex101.com/r/Z4cE9A/5
请注意,我需要具有以下表达式特征的匹配项:
香料:golang /标志:单行
重要提示:我不能使用字符“ |”因为在我要使用此字符串的系统上它无法正常工作。
任何帮助将不胜感激。预先感谢您的支持。
编辑:我很困惑。无效字符为“ |”。但是,如果可能的话,最好也避免使用“ /”,因为我不确定它是否有效。如果您愿意,我们可以给我提供两个字符串,一个不带符号“ /”,一个不带符号,以防不起作用。
答案 0 :(得分:0)
这应该做您想要的:
(?i:(http)|(error))
您可以将http
和error
替换为要搜索的任何其他关键字。
要在Golang中做到这一点:
package main
import (
"fmt"
"regexp"
"strings"
)
func main() {
keywords := []string{
"error",
"http",
}
p := "(?i:(" + strings.Join(keywords, ")|(") + "))"
text := `
Gran Turismo Sport
Shipment Error
Attempt
https://
`
re := regexp.MustCompile(p)
fmt.Println(re.MatchString(text))
}
您可以在Golang游乐场进行测试:
https://play.golang.org/p/XOhNVBCh8Pt
编辑:
基于无法使用|
字符的新限制,我建议您使用以下字符进行搜索:
(?i:(error)?(http)?)
这将始终返回true(或在find all中找到空字符串的列表),但是好事情是您可以过滤掉所有空字符串,最后得到想要的结果。
这是在Golang Playground中工作的一个示例:
https://play.golang.org/p/miVC0hdLtQc
编辑2:
如果要确保所有关键字都在文本中,请用?
更改正则表达式中的{1,}
。另外,您不再需要循环。
(?i:(error){1,}(http){1,})
这是在Golang Playground中工作的示例