Я просто спросил об этом question об использовании регулярного выражения, чтобы разрешать числа от -90.0 до +90.0. Я получил несколько ответов о том, как реализовать регулярное выражение, но в большинстве ответов также упоминалось, что лучше обрабатывать, не используя регулярное выражение или использовать регулярное выражение, будет излишним. Итак, как вы решаете, когда использовать регулярное выражение и когда не использовать регулярное выражение. Есть ли список проверок, которым вы можете следовать?
Использовать или не использовать регулярные выражения?
Ответ 1
Регулярные выражения - это инструмент обработки текста для тестов на основе символов. Более формально регулярные выражения хороши при работе с обычными языками и плохими почти во всем.
На практике это означает, что регулярные выражения не очень подходят для задач, требующих обнаружения смысла (семантики) в тексте, выходящего за пределы уровня персонажа. Для этого потребуется полноразмерный парсер.
В вашем конкретном случае: распознавание числа в тексте - упражнение, в котором правильные выражения хороши (десятичные числа могут быть тривиально описаны с использованием обычного языка). Это работает на уровне персонажа.
Но использование более продвинутых материалов с числом, требующим знания его численного значения (т.е. его семантики), требует интерпретации. Регулярные выражения плохо в этом. Поэтому найти номер в тексте легко. Найти число в тексте, которое больше 11, но меньше 1004 (или делится на 3), сложно: требуется распознавание значения числа.
Ответ 2
Я бы сказал, что выражения регулярных выражений наиболее эффективны для строк. Для других типов данных манипуляции с этим типом данных обычно будут более интуитивными и обеспечат лучшие результаты.
Например, если вы знаете, что имеете дело с DateTime, то вы можете использовать методы Parse и TryParse для разных форматов, и обычно они будут более надежными, чем ваши собственные выражения регулярных выражений.
В вашем примере вы имеете дело с числами, поэтому обращайтесь с ними соответственно.
Regex очень мощный, но это не самый простой код для чтения и отладки. Когда еще одно надежное решение под рукой, вы должны, вероятно, пойти на это.
Ответ 3
Без значения, чтобы быть круглым или тупым, вы должны использовать регулярные выражения, когда у вас есть строка, которая содержит информацию, структурированную в регулярном языке, и вы хотите превратить эту строку в объектную модель.
Ответ 4
Ответ прост:
Если вы можете решить свою проблему без регулярных выражений (просто с помощью строковых функций), вы не будете использовать регулярные выражения. Как было сказано в одной книге, я читал: регулярные выражения - это насилие над компьютером.
Если это сложно использовать языковые строковые функции, используйте регулярные выражения.
Ответ 5
Основной пример использования для RegEx: -
-
Вам нужны "пары ключевых значений". Оба ключа и значения встроены в другой шумный текст - возможно, доступ к нему или изолированный в противном случае.
-
Вам необходимо автоматизировать извлечение этих значений, перейдя по нескольким документам.
-
Число и комбинация пар ключей могут быть обнаружены при прогрессе в анализе текста.