Go-Regexp-Grenze mit Nicht-ASCII-Zeichen: Eine Regex-Modifikation
Der Umgang mit Nicht-ASCII-Zeichen kann bei der Arbeit mit Golangs regulären Zeichen eine Herausforderung darstellen Ausdrücke (regex). Insbesondere die Grenzoption „b“, die auf Zeichengrenzen abgestimmt ist, verhält sich möglicherweise nicht wie erwartet, wenn auf lateinische Zeichen wie „é“ gestoßen wird. Dieses Problem entsteht, weil „b“ ausschließlich mit ASCII-Zeichen arbeitet.
Um dieses Problem zu beheben, können wir eine benutzerdefinierte Grenze erstellen, die einen größeren Bereich von Zeichen über ASCII hinaus umfasst. Hier ist eine Lösung:
<code class="go">package main import ( "fmt" "regexp" ) func main() { r, _ := regexp.Compile(`(?:\A|\s)(vis)(?:\s|\z)`) fmt.Println(r.MatchString("vis")) // Handle case without boundary fmt.Println(r.MatchString("re vis e")) fmt.Println(r.MatchString("revise")) fmt.Println(r.MatchString("révisé")) }</code>
Erklärung:
Dieser modifizierte reguläre Ausdruck verwendet die folgenden Ersetzungen:
Dadurch kann die Grenze am Anfang der Zeichenfolge, am Ende der Zeichenfolge oder an Leerzeichen übereinstimmen. Lateinische Zeichen wie „é“ gelten jetzt als gewöhnliche Zeichen und lösen keine falschen Grenzübereinstimmungen aus.
Durch die Änderung der Grenzoption können wir lateinische Zeichen und andere Nicht-ASCII-Zeichen in den regulären Ausdrücken von Go effektiv verarbeiten und so Genauigkeit gewährleisten passendes Verhalten.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit Nicht-ASCII-Zeichen mit Go-Regex-Grenzen um: Eine Lösung für „é' und darüber hinaus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!