首页 >后端开发 >Golang >如何在 Go 中高效创建不区分大小写的正则表达式?

如何在 Go 中高效创建不区分大小写的正则表达式?

Barbara Streisand
Barbara Streisand原创
2024-12-07 20:41:18553浏览

How Can I Efficiently Create Case-Insensitive Regular Expressions in Go?

Go 中不区分大小写的正则表达式

考虑一个从用户输入构造正则表达式的场景,如以下代码所示:

reg, err := regexp.Compile(strings.Replace(s.Name, " ", "[ \._-]", -1))

其中 s.Name 是一个类似“North by Northwest”的字符串。您可以考虑迭代字符并手动构造不区分大小写的表达式:

for i := 0; i < len(s.Name); i++ {
  if s.Name[i] == " " {
    fmt.Fprintf(str, "%s[ \._-]", str);
  } else {
    fmt.Fprintf(str, "%s[%s%s]&quot;, str, strings.ToLower(s.Name[i]), strings.ToUpper(s.Name[i]))
  }
}

但是,有一个更有效的解决方案。

使用不区分大小写的标志

您可以通过将标志 (?i) 添加到搜索的开头来指定不区分大小写的搜索正则表达式:

reg, err := regexp.Compile("(?i)"+strings.Replace(s.Name, " ", "[ \._-]", -1))

对于固定的正则表达式,可以按如下方式使用此标志:

r := regexp.MustCompile(`(?i)CaSe`)

有关正则表达式标志的更多信息可以在 regexp/syntax 包文档中找到。

以上是如何在 Go 中高效创建不区分大小写的正则表达式?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn