Go 正規表現境界で非 ASCII 文字を処理する方法: \'é\' 以降の解決策?

Patricia Arquette
リリース: 2024-10-30 10:17:02
オリジナル
1002 人が閲覧しました

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

非 ASCII 文字との Go 正規表現境界: 正規表現の変更

Golang の通常の文字を扱う場合、非 ASCII 文字を扱うと問題が発生する可能性があります。式 (正規表現)。特に、文字境界と一致するように設計された「b」境界オプションは、「é」などのラテン文字に遭遇した場合に期待どおりに動作しない可能性があります。この問題は、「b」が ASCII 文字のみで動作するために発生します。

これを解決するには、ASCII を超える幅広い文字を包含するカスタム境界を作成できます。解決策は次のとおりです:

<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>
ログイン後にコピー

説明:

この変更された正規表現では次の置換が使用されます:

  • "b" は置換されます。 "(?:A|s)(?:s|z)" です。
  • "A" は文字列の先頭を表します。
  • "z" は文字列の末尾を表します。
  • "s" は空白を表します。

これにより、文字列の先頭、文字列の末尾、または空白文字で境界を一致させることができます。 "é" のようなラテン文字は通常の文字とみなされ、誤った境界一致がトリガーされることはありません。

境界オプションを変更することで、Go の正規表現でラテン文字やその他の非 ASCII 文字を効果的に処理できるようになり、正確性が確保されます。一致する動作。

以上がGo 正規表現境界で非 ASCII 文字を処理する方法: \'é\' 以降の解決策?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!