Go で正規表現が機能しない: 問題を理解する
正規表現パターンは一見単純であるにもかかわらず、なぜ正規表現パターンが Go で一致しないのですか行く?問題を詳しく調べて解決策を見つけてみましょう。
元のコードと出力
次の Go コードを考えてみましょう。
package main import ( "fmt" "regexp" ) func main() { a := "parameter=0xFF" regex := "^.+=\b0x[A-F][A-F]\b$" result, err := regexp.MatchString(regex, a) fmt.Println(result, err) }
驚くべきことに、出力は false
生の文字列を使って解決する
この問題を解決する鍵は、定義時に生の文字列リテラルを使用することにあります。正規表現パターン。生の文字列リテラルは、二重引用符 (") ではなく逆引用符 (`) で囲まれた一連の文字です。
生の文字列リテラルを使用すると、Go がバックスラッシュをエスケープ文字として解釈するのを防ぐことができます。これは非常に重要です。パターンには、特定の一致条件を定義するエスケープ シーケンス (b および x) が含まれているためです。
更新されたコード
生の文字列リテラルを使用すると、コードは次のようになります。
var regex string = `^.+=\b0x[A-F][A-F]\b$`
パターンの説明
更新されたパターンは、次の基準を満たす文字列と一致します。
結論
生の文字列リテラルを使用することで、正規表現パターンが確実に解釈されるようにしますこれにより、意図どおりにパターンが目的の入力文字列と正確に一致するようになります。
以上がGo の正規表現が一致しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。