2012-01-28 17 views
19

Kiedy zaimplementuję obiekt wyrażeń regularnych z określonymi ustawieniami narodowymi, w jaki sposób wpływa on na pasujące zachowanie? Czy ma to wpływ na sortowanie lub cokolwiek innego? Nigdzie nie mogę znaleźć żadnego wyjaśnienia.Specyficzne ustawienia regionalne w bibliotece regex?

+0

Zobacz także http://stackoverflow.com/q/10540305/83805 –

+0

@DonStewart: Zainteresował mnie tylko C++. Specyficzne zachowanie nie zawsze jest takie samo wszędzie, jak sobie wyobrażam. –

+1

Ustawienia regionalne wpływają na silniki regex zgodne z POSIX, co jest przynajmniej punktem wyjścia dla większości bibliotek regex. –

Odpowiedz

42

Wpływa co najmniej następujące elementy:

  • Sortowanie: regex [a-f] przepojona francuskiego lokalizacji powinny pasować E znaków.
  • Podobnie \w w fińskim lokalizacji należy dopasować charakter (ale [a-z] powinny nie, jak A, A i ö zestawianie po zw fińskim. W języku niemieckim, jednak [a-z] należy dopasować.)
  • W należy zastosować język zgodny z Unicode, należy użyć algorytmu Unicode equivalence, aby złożone postacie postaci pasowały do ​​rozłożonej formy i na odwrót.
  • Ze smakiem regex zgodnym z POSIX (podstawowym, rozszerzonym, awk, grep i egrep), POSIX character classes powinien być locale-aware: [=e=] powinien odpowiadać é w języku francuskim, ale nie w języku angielskim.
3

W hiszpańskim języku należy pamiętać, że "ch" i "ll" nie są już traktowane jako pojedyncze litery alfabetu, ponieważ zostały zmienione przez odpowiednie podmioty. Nie mogłem znaleźć dokładną datę, ale teraz „ch” i „ll” są dwie litery:

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

myślę teraz implementacje odzwierciedlać ten fakt.

Powiązane problemy