Есть некоторые задачи, где регулярные выражения - лучший инструмент для использования.
Есть некоторые задачи, в которых регулярные выражения бессмысленно скрыты.
Есть некоторые задачи, в которых они разумно подходят, но другой подход может быть более читабельным.
В общем, я думаю об использовании регулярного выражения, когда задействован фактический шаблон . Если вы просто ищете конкретную строку, я бы не стал использовать регулярное выражение. Как пример серой области, кто-то однажды спросил в группе новостей лучший способ проверить, содержит ли одна строка какую-либо из ряда других строк. Два способа, которые пришли, были:
- Создайте регулярное выражение с альтернативами и выполните одно совпадение.
- Проверьте каждую строку по очереди с
string.Contains
.
Лично я думаю, что последний способ намного проще - он не требует каких-либо мыслей об экранировании искомых строк или каких-либо других знаний о регулярных выражениях (и их различных разновидностях в разных платформы).
В качестве примера того, что регулярные выражения являются совершенно неправильным выбором, кто-то всерьез предложил использовать регулярное выражение для проверки, является ли строка длиной три символа. Их регулярное выражение даже не работало, несмотря на то, что они утверждали, что причина, по которой они думали о регулярных выражениях в первую очередь, заключается в том, что они использовали их так долго, и что они естественным образом «думали» в регулярных выражениях.
Однако существует множество примеров, когда регулярные выражения действительно облегчают жизнь - как я уже сказал, когда вы на самом деле сопоставляете шаблонов : «Мне нужна одна буква, затем три цифры, затем другая». письмо "или что-то еще. Я не часто использую регулярные выражения, но когда я их делаю , они экономят много работы.
Короче говоря, я считаю, что полезно знать регулярные выражения, но в равной степени нужно быть осторожным с тем, когда их использовать. Легко получить код только для записи, который можно было бы упростить для понимания, переписав с помощью простых строковых операций, даже если полученный код немного длиннее.
РЕДАКТИРОВАТЬ: В ответ на редактирование вопроса ...
Я не думаю, что это хорошая идея - быть евангелистом в их отношении - по моему опыту, имеет тенденцию приводить к их использованию там, где альтернатива будет проще, а это просто делает вас плохо выглядящим. С другой стороны, если вы встретите человека, пишущего сложный код для , избегающего использования с использованием регулярного выражения, то можно отметить, что регулярное выражение сделает код проще.
Лично мне нравится комментировать мои регулярные выражения довольно подробно, разбивая их на несколько строк с комментариями между каждой строкой. Таким образом, их легче поддерживать, и не похоже, что вы просто пытаетесь быть «жестким ядром» (это может показаться , даже если это не настоящая намеченная цель) .
Я думаю, что самое важное - запомнить это короткое слово = читабельное. Никогда не утверждайте, что использование регулярных выражений лучше, потому что для этого требуется меньше кода, - утверждайте, что это лучше, когда оно действительно проще и легче для понимания (или там, где есть существенное повышение производительности, конечно).