【发布时间】:2021-08-13 08:33:53
【问题描述】:
package main
import "fmt"
import "regexp"
func main() {
var sep = "=~"
var filter = "exported_pod=~.*grafana.*"
matched, _ := regexp.MatchString(sep+`\b`, filter)
fmt.Println(matched)
}
在上面的 sn-p 中,如果 =~ 恰好出现在 filter 字符串中,我会尝试返回 True。
无法理解为什么它会返回 false。
如果filter 字符串是"exported_pod=~grafana.*",它会按预期工作,而如果它是"exported_pod=~.*grafana.*",它会失败。请帮助我了解这里出了什么问题。
实际问题是:
将字符串拆分为=、=~、!=、!~。
在上面的例子中,结果应该是[ "exported_pod", ".*grafana.*" ]。
但这种拆分应该发生在任何一个列出的分隔符上。
【问题讨论】:
-
如果您正在寻找文字
"=~"使用 strings.Contains 而不是正则表达式。 -
@Volker 在可以正则表达式或非正则表达式的字符串中测试 =、=~、!=、!~ 的最佳方法应该是什么?如果我使用 string.contains("=") 问题是它会匹配这样的字符串以及exported_pod=~.*grafana.*"。(注意~这里)。
-
我承认我不知道你的实际问题是什么。什么是“可以正则表达式或非正则表达式的字符串”。如果您想查看一个字符串是否包含
=后面没有 ~ 并且前面没有 !您可以使用正则表达式或直接将其编码(这可能更简单)。