Давайте разберемся с этим сразу: я люблю регулярные выражения. На самом деле, я знаю, что они — швейцарский армейский нож обработки текста, и ни один уважающий себя разработчик не сможет долго обходиться без них
Конечно, мы все также знаем, насколько они опасны. Как всегда, с великой силой приходит большая ответственность.
Тем не менее, если вы знаете, как — и когда — и почему — использовать регулярные выражения, они незаменимы. Так что на этой неделе регулярные выражения будут нашей темой.
Ниже приведены пять регулярных выражений. Каждый из них соответствует строке реального мира; то есть полуструктурированный фрагмент текста, который вы, возможно, захотите извлечь из большого документа. Вот пример вопроса, чтобы дать вам представление о том, что я имею в виду:
[0-9]{5}
Это, конечно, почтовый индекс США.
Итак, каким «вещам» соответствуют эти регулярные выражения? Для этого теста мы предположим, что механизм регулярных выражений работает в режиме без учета регистра:
-
[A-PR-Y0-9]{3}-[A-PR-Y0-9]{3}-[A-PR-Y0-9]{4}
-
&(?!(w+|#d+);)
-
(-?(?:0|[1-9]d*))(.d+)?([eE][-+]?d+)?
-
([da-f]{2}:){5}([da-f]{2})
-
<[^>]*?>
Конечно, так как мы имеем дело с регулярными выражениями здесь, я был бы неправ, если бы я не дал вам две проблемы по цене одной.
В каждом случае с регулярным выражением что-то не так. Например, приведенное выше регулярное выражение для почтового индекса не соответствует формату ZIP + 4 (т.е. 66044-0034), который используется для многих адресов в наши дни.
Итак, что касается второй части, что не так с остальными?
Наслаждайтесь своей начинкой живота благодарения, и настраивайтесь в течение выходных для ответов.