Go の正規表現の問題: Python では機能するのに Go では機能しないのはなぜですか?
プログラミングの分野では、正規表現 (正規表現)は、パターン マッチングと文字列操作のための貴重なツールです。ただし、場合によっては、正規表現が異なる言語間で予期せず誤動作することがあります。好例: Go プログラマによって報告された不可解な問題。Python では完璧に機能する正規表現が、Go では不可解にも失敗します。
問題のコードは、特定のパターンに従う文字列と一致することを目的としています。 =0xA-F」。ただし、開発者は困惑しているのですが、Python でこのパターンをキャプチャする正規表現 "^. =b0xA-Fb$" は、Go では "false" という予期しない出力を生成します。
詳しく調べると、その原因は、Go での従来の文字列リテラルの使用であることが明らかになりました。 Go の文字列は通常、二重引用符で囲まれており、改行の「n」などのエスケープ シーケンスが許可されています。ただし、正規表現パターンには、単語の境界を示すリテラル「b」が含まれています。これは、"b" をバックスペースのエスケープ シーケンスとして扱う Go インタープリタの文字列の処理と矛盾します。
この問題を修正するために、Go は逆引用符で示される生の文字列リテラルを採用し、文字を文字どおりに解釈します。エスケープ シーケンスの置換。正規表現パターンを二重引用符ではなく逆引用符 ("`^. =b0xA-Fb$") で囲むことにより、コードは Go の目的の文字列と正しく一致します。
以上が私の正規表現は Python では機能するのに Go では機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。