Home > Backend Development > Golang > Why Does Go Regex \\b Boundary Fail with Latin Characters?

Why Does Go Regex \\b Boundary Fail with Latin Characters?

Barbara Streisand
Release: 2024-11-03 04:20:31
Original
872 people have browsed it

 Why Does Go Regex \b Boundary Fail with Latin Characters?

b Boundaries with Latin Characters in Go Regex

In the world of Go regular expressions, the b boundary option has a slight quirk when dealing with Latin characters. The issue arises when trying to define words containing Latin characters, such as accented vowels and special characters.

Consider the following example, where we want to match the word "vis" using the b boundary option:

<code class="go">import (
    "fmt"
    "regexp"
)

func main() {
    r, _ := regexp.Compile(`\b(vis)\b`)
    fmt.Println(r.MatchString("re vis e"))
    fmt.Println(r.MatchString("revise"))
    fmt.Println(r.MatchString("révisé"))
}</code>
Copy after login

Surprisingly, the expected result of matching "révisé" as false doesn't occur. Instead, it matches as true. This is because b operates only on ASCII word boundaries.

To resolve this issue and accurately match Latin characters, we can replace the b boundary with a more inclusive alternative. Here's an example:

<code class="go">import (
    "fmt"
    "regexp"
)

func main() {
    r, _ := regexp.Compile(`(?:\A|\s)(vis)(?:\s|\z)`)
    fmt.Println(r.MatchString("vis"))
    fmt.Println(r.MatchString("re vis e"))
    fmt.Println(r.MatchString("revise"))
    fmt.Println(r.MatchString("révisé"))
}</code>
Copy after login

With this modification, the regex now recognizes the start and end of words using a combination of start of string (A), end of string (z), and whitespace (s). The result accurately matches "vis" as true and "révisé" as false:

true
true
false
false
Copy after login

This technique ensures accurate word matching, regardless of the presence of Latin characters.

The above is the detailed content of Why Does Go Regex \\b Boundary Fail with Latin Characters?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template