Если я создаю Regex
на основе этой модели: @"[A-Za-z]+"
, делает множество, что соответствует изменению вообще, добавив RegOptions.IgnoreCase
, если я уже использую RegOptions.CultureInvariant
(из-за issues like this)? Я думаю, что это очевидное «нет, это просто избыточно и повторяемо». И в моих тестах это то, что я показал, но мне интересно, не хватает ли я чего-то из-за ошибки подтверждения.Понимание последствия CultureInvariant и IgnoreCase на [A-Za-Z]
Пожалуйста, исправьте меня, если я ошибаюсь в этом вопросе, но я считаю, что мне определенно нужно использовать CultureInvariant
, хотя я также не знаю, какова будет культура. MSDN Reference
Примечание: Это не фактический образец, который мне нужно использовать, просто простейшая критическая его часть. Полный шаблон: @"[A-Za-z0-9\s!\\#$(),.:;[email protected]'\-{}|/&]+"
, если на самом деле есть странное поведение, окружающее символы, случай и культуру. Нет, я не создал шаблон, я просто его потребляю, не могу его изменить, и я понимаю, что |
не нужен до /&
.
Если бы я мог изменить шаблон ...
- шаблон
"[a-z]"
с обоимиCultureInvariant
иIgnoreCase
будет функционально эквивалентно"[A-Za-z]"
с использованием толькоCultureInvariant
правильно? - Предполагая, что № 1 является правильным, что было бы более эффективным и почему? Я бы предположил, что более короткая модель более эффективна для оценки, но я не знаю, как внутренние работы работают прямо сейчас, чтобы сказать это с большой уверенностью.
'CultureInvariant' не влияет на' [A-Za-z] ', потому что турецкий i (или любые другие символы, относящиеся к культуре) не находится в указанном вами диапазоне. –
Возможно, запустите цикл над всеми возможными символами 65536? Вы даже можете проверить все 2 последовательности символов. – usr
Анекдотические доказательства, которые я обнаружил при исследовании моего ответа здесь: http://stackoverflow.com/questions/6004819/why-compiled-regex-performance-is-slower-than-intrepreted-regex/6005226#6005226 указывает, что '[A- Za-z] 'будет быстрее, чем использование' RegexOptions.IgnoreCase'. –