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]", str, strings.ToLower(s.Name[i]), strings.ToUpper(s.Name[i])) } }
Es gibt jedoch eine effizientere Lösung.
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!