Подтвердить что ты не робот

Regex и Capital я в некоторых культурах

Что не так с капиталом "я" в некоторых культурах? Я обнаружил, что в некоторых культурах нельзя найти в особых условиях - если вы ищете [a-z] с флагом RegexOptions.IgnoreCase. Вот пример кода:

var allCultures = CultureInfo.GetCultures(CultureTypes.AllCultures);
var allLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
var allLettersCount = allLetters.Length;

foreach (var culture in allCultures)
{
    Thread.CurrentThread.CurrentCulture = culture;
    Thread.CurrentThread.CurrentUICulture = culture;

    var matched = string.Empty;
    foreach (var m in Regex.Matches(allLetters, "[A-Za-z0-9]", RegexOptions.IgnoreCase))
        matched += m;

    var count = matched.Length;
    if (count != allLettersCount)
        Console.WriteLine("Culture '{0}' - {1} missing; Matched: {2}", culture.Name, (allLettersCount - count).ToString(), matched);
}

Выход (уведомление об отсутствии капитала я в каждой строке):

Culture 'az' - 1 missing; Matched:          ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
Culture 'az-Cyrl' - 1 missing; Matched:     ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
Culture 'az-Cyrl-AZ' - 1 missing; Matched:  ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
Culture 'az-Latn' - 1 missing; Matched:     ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
Culture 'az-Latn-AZ' - 1 missing; Matched:  ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
Culture 'tr' - 1 missing; Matched:          ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
Culture 'tr-TR' - 1 missing; Matched:       ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789

Интересно, что если флаг "IgnoreCase" не используется, он работает хорошо и находит "I".

4b9b3361

Ответ 1

Ответ находится в Wikipedia:

Корпус бесчисленных и пунктирных форм я отличается от других языки. Это означает, что нечувствительность к регистру, английский человек не соответствует ожиданиям турецкого пользователя. "Турецкий я" часто используется в качестве примера проблем с случаем нечувствительность к вычислениям.

И еще одно объяснение можно найти на MSDN:

enter image description here