2012-01-28 3 views
19

特定のロケールで正規表現オブジェクトを埋め込むと、どのようにマッチング動作に影響しますか?照合に影響するの?私はどこでも説明を見つけることができないようです。正規表現ライブラリのロケール固有の動作?

+0

も参照してください。http://stackoverflow.com/q/10540305/83805 –

+0

@DonStewart:私はC++仕様にのみ興味がありました。ロケール固有の動作は、私が想像するところでは必ずしも同じではありません。 –

+1

ロケールはPOSIX準拠の正規表現エンジンに影響を与えます。少なくとも、正規表現ライブラリのほとんどの出発点です。 –

答えて

42

これは、少なくとも以下の影響:

  • 照合:正規表現[a-f]フランス語ロケールを吹き込まが文字éと一致する必要があります。
  • 同様
  • 、キャラクタAと一致している必要があり、フィンランドロケールに\w(しかし[a-z]ないは、A、AとおよびOフィンランドにおけるzの後に照合する。ドイツでは、しかし、[a-z]はAと一致しなければならないべきである。)
  • でUnicode互換のロケールの場合は、Unicode equivalenceアルゴリズムを使用して、構成された文字の形が分解された形に一致するようにする必要があります。
  • POSIX互換のregexフレーバ(basic、extended、awk、grep、およびegrep)の場合、POSIX character classesはロケール対応である必要があります。[=e=]はフランス語ロケールではéに一致しますが、英語ロケールでは一致しません。
3

「ch」と「ll」は、関連するエンティティによって変更されたため、アルファベットでは1文字とはみなされないことに注意してください。私は、正確な日付を見つけることができなかったが、それは今、「CH」と2つの文字です「LL」:

http://en.wikipedia.org/wiki/Ll

私は実装が今その事実を反映だと思います。