现在,当然,我可以写我的正则表达式来处理这两种情况,如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”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。