Heim >Backend-Entwicklung >Golang >Wie kann ich in Go effizient reguläre Ausdrücke ohne Berücksichtigung der Groß- und Kleinschreibung erstellen?

Wie kann ich in Go effizient reguläre Ausdrücke ohne Berücksichtigung der Groß- und Kleinschreibung erstellen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-07 20:41:18556Durchsuche

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

Reguläre Ausdrücke ohne Berücksichtigung der Groß-/Kleinschreibung in Go

Stellen Sie sich ein Szenario vor, in dem Sie einen regulären Ausdruck aus Benutzereingaben erstellen, wie im folgenden Code dargestellt:

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

wobei s.Name eine Zeichenfolge wie „North by Northwest“ ist. Sie könnten erwägen, über die Zeichen zu iterieren und manuell Ausdrücke zu erstellen, bei denen die Groß-/Kleinschreibung nicht berücksichtigt wird:

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]))
  }
}

Es gibt jedoch eine effizientere Lösung.

Verwendung des Flags für die Groß-/Kleinschreibung

Sie können eine Suche festlegen, bei der die Groß-/Kleinschreibung nicht berücksichtigt wird, indem Sie das Flag (?i) am Anfang Ihrer Eingabe hinzufügen Regex:

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

Für einen festen Regex kann dieses Flag wie folgt verwendet werden:

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

Weitere Informationen zu Regex-Flags finden Sie in der Dokumentation zum Regexp/Syntax-Paket.

Das obige ist der detaillierte Inhalt vonWie kann ich in Go effizient reguläre Ausdrücke ohne Berücksichtigung der Groß- und Kleinschreibung erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn