Локаль специфическое поведение в библиотеке регулярных выражений? - PullRequest
19 голосов
/ 28 января 2012

Когда я наполняю объект регулярного выражения определенной локалью, как это влияет на поведение сопоставления? Влияет ли это на сопоставление или что-то еще? Кажется, я нигде не могу найти объяснения.

Ответы [ 2 ]

42 голосов
/ 28 января 2012

Это влияет как минимум на следующее:

  • Сопоставление: регулярное выражение [a-f], пропитанное французским языком, должно соответствовать символу é.
  • Аналогично, \w в финском языке должен соответствовать символу ä (но [a-z] должен , а не , так как å, ä и ö сопоставляются после z на финском языке. Однако на немецком языке [a-z] должно соответствовать ä.)
  • В Unicode-совместимой локали должен использоваться алгоритм *1015* эквивалентности Unicode, чтобы составные формы символа соответствовали разложенной форме и наоборот.
  • При использовании POSIX-совместимого варианта регулярного выражения (basic, extended, awk, grep и egrep) классы символов POSIX должны учитывать региональные параметры: [=e=] должно совпадать с é во французском языке, но не на английском языке.
3 голосов
/ 05 июня 2012

В испанской локали, пожалуйста, обратите внимание, что "ch" и "ll" больше не считаются отдельными буквами в алфавите, так как это было изменено соответствующими объектами.Я не смог найти точную дату, но сейчас "ch" и "ll" - это две буквы:

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

Я думаю, что реализации теперь отражают этот факт.

...