加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

regex – 如何在Go中执行不区分大小写的正则表达式?

发布时间:2020-12-14 06:41:47 所属栏目:百科 来源:网络整理
导读:现在,当然,我可以写我的正则表达式来处理这两种情况,如regexp.Compile(“[a-zA-Z]”),但我的正则表达式是从用户给出的字符串构造的: reg,err := regexp.Compile(strings.Replace(s.Name," ","[ ._-]",-1)) 其中s.Name是名称。这可能是像“北西北”。
现在,当然,我可以写我的正则表达式来处理这两种情况,如regexp.Compile(“[a-zA-Z]”),但我的正则表达式是从用户给出的字符串构造的:
reg,err := regexp.Compile(strings.Replace(s.Name," ","[ ._-]",-1))

其中s.Name是名称。这可能是像“北西北”。现在,对我来说最明显的解决方案是遍历s.Name的每个字符,并为每个字母写“[nN]”:

for i := 0; i < len(s.Name); i++ {
  if s.Name[i] == " " {
    fmt.Fprintf(str,"%s[ ._-]",str);
  } else {
    fmt.Fprintf(str,"%s[%s%s]",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`)

有关标志的更多信息,请搜索syntax documentation中的术语“flags”。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读