Рубрики
Без рубрики

Регулярное выражение Python в двух словах

Демистификация регулярного выражения Python

Автор оригинала: Babatunde (codegenius1010).

Регулярное выражение-это один из инструментов, облегчающих программирование, и программирование на Python не является исключением. В этой статье я специально пишу о регулярных выражениях Python и о том, как мне удается их запоминать, поскольку их очень легко забыть.

Позвольте мне начать с определения регулярного выражения, каким я понимаю регулярное выражение. Регулярное выражение-это инструмент, который позволяет нам искать строку данных, используя шаблон, соответствующий информации, которую мы ищем. Представьте себе это так: у вашего босса есть кусок туманной и в подавляющем большинстве запутанной строки данных, и она поручила вам собрать все электронные письма в этих данных. Поэтому вместо того, чтобы искать электронные письма одно за другим в строке данных в 5000 строк, все, что вам нужно сделать, это определить шаблон регулярного выражения, который соответствует электронной почте, чтобы помочь вам получить все электронные письма в этой строке данных.

Есть четыре ключевые вещи, которые я имею в виду в отношении регулярных выражений python: МЕТАСИМВОЛЫ, СПЕЦИАЛЬНАЯ ПОСЛЕДОВАТЕЛЬНОСТЬ, ГРУППЫ, КЛАССЫ

МЕТАСИМВОЛ Это символы, которые делают регулярное выражение более мощным, чем строковые методы. Примеры включают в себя “.”, “^”, ” , + , , ? , . i s a m e t a c |/h a r a c |/t |/e |/r t h |/a t |/m a t c h e s a n |/y |/c h a r a /c t e r|/. . s o i f I h |/a v |/e |/a |/p a t t e r n . . . i s w i l l m a t c h a n y t h r e e c h a r a c t e r w i t h n o n e w l i n e s m a t c h e s t h e b e g i n n i n g o f a s t r i n g “, “+”, “*”, “?”, “{}” “|” “.” является метасимволом, который соответствует любому character..so если у меня есть

Регулярное выражение СПЕЦИАЛЬНЫХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ использует некоторые уникальные последовательности для соответствия шаблону из строки. Они включают в себя \d, \s, \w, которые соответствуют цифрам, пробелу и символам слова соответственно.Для того, чтобы эти метасимволы делали противоположное тому, что их соответствующие функции были указаны выше, нам просто нужно сделать регистры выше: \D, \S, \W будут соответствовать всем, кроме цифр, пробелов и словесных символов, соответственно, Есть более специальные последовательности, такие как \A, \Z, соответствующие началу и концу строки соответственно. \b может помочь нам сопоставить пустую строку между \w и \W

КЛАССЫ СИМВОЛОВ Классы символов-это классы, которые определяют пул шаблонов, любой из которых может быть сопоставлен. Например, если я создаю класс, подобный этому [A-Z0-9a-z], это означает, что я хочу сопоставить любую букву верхнего регистра, любую букву нижнего регистра или любую цифру в грубой строке. Если вы поместите метасимволы – например,”&””. ” – в класс символов, метасимвол будет вести себя как обычный символ. Однако метасимвол “^” эффективен только в классе символов, если он появляется в начале. Например: напишите класс символов, соответствующий строкам, в которых нет цифр. импорт re ‘[^0-9]’ .поиск (шаблон, строка) Приведенное выше соответствие будет использовать класс символов, определенный для выбора из строки. И он выбирает все в строке, кроме чисел

ГРУППЫ – это способы объединения отдельных метасимволов, символов и классов символов. Например, чтобы написать шаблон, соответствующий адресу электронной почты: “codegenius1010@gmail.com”, мне понадобятся 3 группы. Один для “гениального кода”, один для” gmail “и один для”. com”. Давайте напишем их один за другим, а затем соберем их вместе: codegenius: ([\w.-]+) email: ([\w.-]+) .com: (.[\w.]+) Это группы, необходимые нам для соответствия нашей электронной почте. Но разве это все? Нет. Нам нужно поместить константу “@” между первой и второй группой, потому что она есть во всех электронных письмах. Обратите внимание, что мы добавили “+” в качестве “квантора” для каждой из групп, потому что мы знаем, что совпадение может быть одним или несколькими. Теперь давайте соберем все вместе:

импорт re “([\w.-]+)@([\w.-]+)(.[\w.]+)” .поиск (шаблон, rough_string), если электронная почта: печать (email.group())

Это примерно то, что у меня сейчас есть в регулярном выражении Python. Пожалуйста, не стесняйтесь задавать вопросы в поле для комментариев. Спасибо