Wie gehe ich mit Nicht-ASCII-Zeichen mit Go-Regex-Grenzen um: Eine Lösung für „é' und darüber hinaus?

Patricia Arquette
Freigeben: 2024-10-30 10:17:02
Original
1002 Leute haben es durchsucht

How to Handle Non-ASCII Characters with Go Regex Boundaries: A Solution for

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>
Nach dem Login kopieren

Erklärung:

Dieser modifizierte reguläre Ausdruck verwendet die folgenden Ersetzungen:

  • „b“ wird ersetzt mit „(?:A|s)(?:s|z)“.
  • „A“ stellt den Anfang der Zeichenfolge dar.
  • „z“ stellt das Ende der Zeichenfolge dar.
  • „s“ steht für Leerzeichen.

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!