次のコードに示すように、ユーザー入力から正規表現を構築するシナリオを考えてみましょう。
reg, err := regexp.Compile(strings.Replace(s.Name, " ", "[ \._-]", -1))
ここで、s.Name は「北北西」のような文字列です。文字を反復処理し、大文字と小文字を区別しない式を手動で構築することを検討することもできます。
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) を追加することで、大文字と小文字を区別しない検索を指定できます。 regex:
reg, err := regexp.Compile("(?i)"+strings.Replace(s.Name, " ", "[ \._-]", -1))
固定正規表現の場合、このフラグは次のように使用できます:
r := regexp.MustCompile(`(?i)CaSe`)
正規表現フラグの詳細については、regexp/syntax パッケージのドキュメントを参照してください。
以上がGo で大文字と小文字を区別しない正規表現を効率的に作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。