非 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>
説明:
この変更された正規表現では次の置換が使用されます:
これにより、文字列の先頭、文字列の末尾、または空白文字で境界を一致させることができます。 "é" のようなラテン文字は通常の文字とみなされ、誤った境界一致がトリガーされることはありません。
境界オプションを変更することで、Go の正規表現でラテン文字やその他の非 ASCII 文字を効果的に処理できるようになり、正確性が確保されます。一致する動作。
以上がGo 正規表現境界で非 ASCII 文字を処理する方法: \'é\' 以降の解決策?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。