ホームページ > バックエンド開発 > Golang > Go で大文字と小文字を区別しない正規表現を効率的に作成するにはどうすればよいですか?

Go で大文字と小文字を区別しない正規表現を効率的に作成するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-07 20:41:18
オリジナル
582 人が閲覧しました

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

Go での大文字と小文字を区別しない正規表現

次のコードに示すように、ユーザー入力から正規表現を構築するシナリオを考えてみましょう。

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]&quot;, 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート