<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>учебник регулярные выражения - Python 3 | Data Science | Нейронные сети | AI - Искусственный Интеллект</title>
	<atom:link href="https://python.ivan-shamaev.ru/tag/%d1%83%d1%87%d0%b5%d0%b1%d0%bd%d0%b8%d0%ba-%d1%80%d0%b5%d0%b3%d1%83%d0%bb%d1%8f%d1%80%d0%bd%d1%8b%d0%b5-%d0%b2%d1%8b%d1%80%d0%b0%d0%b6%d0%b5%d0%bd%d0%b8%d1%8f/feed/" rel="self" type="application/rss+xml" />
	<link>https://python.ivan-shamaev.ru/tag/учебник-регулярные-выражения/</link>
	<description>Библиотеки обработки данных. Примеры. Строки, списки, файлы, числа, массивы. Язык программирования Python 3 - скачать</description>
	<lastBuildDate>Sun, 09 Jan 2022 20:12:14 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.1</generator>

<image>
	<url>https://python.ivan-shamaev.ru/wp-content/uploads/2019/04/cropped-data_science_python3_logo-32x32.png</url>
	<title>учебник регулярные выражения - Python 3 | Data Science | Нейронные сети | AI - Искусственный Интеллект</title>
	<link>https://python.ivan-shamaev.ru/tag/учебник-регулярные-выражения/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Регулярные выражения в Python (regex find match groups replace string)</title>
		<link>https://python.ivan-shamaev.ru/python-3-regular-expressions-regex-match-group-string/</link>
					<comments>https://python.ivan-shamaev.ru/python-3-regular-expressions-regex-match-group-string/#comments</comments>
		
		<dc:creator><![CDATA[Шамаев Иван]]></dc:creator>
		<pubDate>Wed, 05 Jan 2022 11:51:22 +0000</pubDate>
				<category><![CDATA[Парсинг текста в Python. Регулярные выражения]]></category>
		<category><![CDATA[python как искать подстроку по шаблону]]></category>
		<category><![CDATA[regex python]]></category>
		<category><![CDATA[regular expressions python]]></category>
		<category><![CDATA[парсинг текста]]></category>
		<category><![CDATA[регулярные выражения python]]></category>
		<category><![CDATA[учебник регулярные выражения]]></category>
		<guid isPermaLink="false">https://python.ivan-shamaev.ru/?p=1352</guid>

					<description><![CDATA[<p>Что такое регулярное выражение? Для чего используется Regular Expressions в Python? Регулярное выражение (Regular Expression, RegEx) &#8212; это мощный, гибкий и эффективный инструмент для сопоставления текста на основе заранее определенного шаблона. Т.е. регулярные выражения позволяют найти строки или наборы строк в тексте, используя специализированный синтаксис, с помощью которого описывается шаблон для поиска. Универсальные шаблоны регулярных [&#8230;]</p>
<p>Сообщение <a href="https://python.ivan-shamaev.ru/python-3-regular-expressions-regex-match-group-string/">Регулярные выражения в Python (regex find match groups replace string)</a> появились сначала на <a href="https://python.ivan-shamaev.ru">Python 3 | Data Science | Нейронные сети | AI - Искусственный Интеллект</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a class="a2a_button_telegram" href="https://www.addtoany.com/add_to/telegram?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-3-regular-expressions-regex-match-group-string%2F&amp;linkname=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5%20%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B2%20Python%20%28regex%20find%20match%20groups%20replace%20string%29" title="Telegram" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-3-regular-expressions-regex-match-group-string%2F&amp;linkname=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5%20%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B2%20Python%20%28regex%20find%20match%20groups%20replace%20string%29" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-3-regular-expressions-regex-match-group-string%2F&amp;linkname=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5%20%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B2%20Python%20%28regex%20find%20match%20groups%20replace%20string%29" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-3-regular-expressions-regex-match-group-string%2F&amp;linkname=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5%20%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B2%20Python%20%28regex%20find%20match%20groups%20replace%20string%29" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_vk" href="https://www.addtoany.com/add_to/vk?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-3-regular-expressions-regex-match-group-string%2F&amp;linkname=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5%20%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B2%20Python%20%28regex%20find%20match%20groups%20replace%20string%29" title="VK" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-3-regular-expressions-regex-match-group-string%2F&amp;linkname=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5%20%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B2%20Python%20%28regex%20find%20match%20groups%20replace%20string%29" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-3-regular-expressions-regex-match-group-string%2F&amp;linkname=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5%20%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B2%20Python%20%28regex%20find%20match%20groups%20replace%20string%29" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-3-regular-expressions-regex-match-group-string%2F&#038;title=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5%20%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B2%20Python%20%28regex%20find%20match%20groups%20replace%20string%29" data-a2a-url="https://python.ivan-shamaev.ru/python-3-regular-expressions-regex-match-group-string/" data-a2a-title="Регулярные выражения в Python (regex find match groups replace string)"></a></p><h1>Что такое регулярное выражение? Для чего используется Regular Expressions в Python?</h1>
<p><strong>Регулярное выражение (Regular Expression, RegEx)</strong> &#8212; это мощный, гибкий и эффективный инструмент для сопоставления текста на основе заранее определенного шаблона. Т.е. регулярные выражения позволяют найти строки или наборы строк в тексте, используя специализированный синтаксис, с помощью которого описывается шаблон для поиска. Универсальные шаблоны регулярных выражений напоминают миниатюрный язык программирования, который предназначен для описания и разбора текста.</p>
<h2>Почему регулярные выражения?</h2>
<p>Давайте попробуем понять, почему нам следует использовать регулярные выражения для работы с текстом?</p>
<p>Вот несколько <strong>сценариев для работы с RegEx в Python</strong>:</p>
<ol>
<li><strong>Data Mining:</strong> регулярное выражение &#8212; лучший инструмент для интеллектуального анализа данных. Он эффективно идентифицирует текст (строку, подстроку) в куче текста, проверяя его по заранее заданному шаблону. Некоторые распространенные сценарии &#8212; определение адреса электронной почты, URL-адреса или телефона из кучи текста.</li>
<li><strong>Data Validation (Проверка данных):</strong> регулярное выражение может идеально подойти для таких задач, как проверка данных. Он может включать в себя широкий спектр процессов проверки путем определения различных наборов шаблонов. Вот несколько примеров: проверка номеров телефонов, электронной почты и т.д.</li>
</ol>
<h2>Модуль Re (import re) &#8212; операции с регулярными выражениями</h2>
<p>Python имеет встроенный пакет с именем <code class="w3-codespan">re</code>, который можно использовать для работы с регулярными выражениями.</p>
<p>Этот модуль предоставляет операции сопоставления регулярных выражений в Python, аналогичные тем, которые имеются в Perl. <strong>Основная функция модуля re</strong> &#8212; предложить поиск, в котором используются регулярное выражение и строка. Здесь он либо возвращает первое совпадение, либо ничего. Модуль re вызывает исключение re.error, если ошибка возникает при компиляции или использовании регулярного выражения.</p>
<p>Команда для импорта модуля <code class="w3-codespan">re</code>:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">import re</pre>
<h2>Краткое описание синтаксиса RegEx на примере с Email</h2>
<p>Для того, чтобы кратко познакомиться с Regular Expression, рассмотрим два примера и описание некоторых компонентов регулярного выражения.</p>
<p><strong>Пример регулярного выражения для проверки email с пометкой каждого компонента:</strong></p>
<p><a href="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/regular_expression_email_matching_example2.jpg"><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-1370" src="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/regular_expression_email_matching_example2.jpg" alt="" width="1022" height="411" srcset="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/regular_expression_email_matching_example2.jpg 1022w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/regular_expression_email_matching_example2-300x121.jpg 300w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/regular_expression_email_matching_example2-768x309.jpg 768w" sizes="(max-width: 1022px) 100vw, 1022px" /></a></p>
<p><strong>Еще один пример с почтой:</strong></p>
<p><a href="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/regex_email_example.jpg"><img decoding="async" class="aligncenter size-full wp-image-1368" src="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/regex_email_example.jpg" alt="" width="1246" height="445" srcset="https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/regex_email_example.jpg 1246w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/regex_email_example-300x107.jpg 300w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/regex_email_example-1024x366.jpg 1024w, https://python.ivan-shamaev.ru/wp-content/uploads/2022/01/regex_email_example-768x274.jpg 768w" sizes="(max-width: 1246px) 100vw, 1246px" /></a></p>
<p><strong>Описание некоторых общих компонентов регулярных выражений:</strong></p>
<ul>
<li>Символ + в регулярном выражении означает &#171;сопоставить предыдущий символ один или несколько раз&#187;. <strong class="kx fy">Например, </strong><code class="mi mj mk ml mm b">ab+c</code> <strong class="kx fy">соответствует &#171;abc&#187;, &#171;abbc&#187;, &#171;abbbc&#187;, но не соответствует &#171;ac&#187;</strong> . Знак плюс, используемый в регулярном выражении, называется Клини плюс в честь математика Стивена Клини (1909–1994), который ввел эту концепцию.</li>
<li>Символ * в регулярном выражении означает «сопоставить предыдущий символ ноль или более раз». <strong class="kx fy">Например, </strong><code class="mi mj mk ml mm b">ab*c</code> <strong class="kx fy">соответствует &#171;abc&#187;, &#171;abbc&#187;, &#171;abbbc&#187; и &#171;ac&#187;</strong>. Это называется звездой Клини.</li>
<li id="af2c" class="lz ma ij kx b ky mn lb mo le mp li mq lm mr lq me mf mg mh jp" data-selectable-paragraph="">Знак вопроса ? указывает на <em class="lu">0 или 1 </em>вхождение предыдущего элемента. <strong class="kx fy">Например, </strong><code class="mi mj mk ml mm b">colou?r</code> <strong class="kx fy">соответствует как &#171;color&#187;, так и &#171;colour&#187;.</strong></li>
<li>Точка соответствует любому одиночному символу (кроме символа новой строки). Например, <code class="mi mj mk ml mm b">a.c</code> соответствует &#171;abc&#187;, &#171;adc&#187;, &#171;aec&#187; и т.д. Если мы хотим сопоставить несколько символов перед буквой &#171;c&#187;, мы бы просто использовали звездочку <code class="mi mj mk ml mm b">*</code> следующим образом: <code class="mi mj mk ml mm b">a.*c</code> и это будет соответствовать <strong class="kx fy">&#171;a</strong> bdefgh <strong class="kx fy">c&#187;</strong>.</li>
<li id="7413" class="lz ma ij kx b ky mn lb mo le mp li mq lm mr lq me mf mg mh jp" data-selectable-paragraph=""><code class="mi mj mk ml mm b">[a-z]</code>: очень полезно, так как определяет диапазон возможных значений &#8212; относится ко всем строчным буквам алфавита от a до z. Мы можем сделать то же самое для букв верхнего регистра и всех положительных чисел, подобных этому <code class="mi mj mk ml mm b">[A-Z]</code> &amp; <code class="mi mj mk ml mm b">[0-9]</code>.</li>
<li id="88e9" class="lz ma ij kx b ky mn lb mo le mp li mq lm mr lq me mf mg mh jp" data-selectable-paragraph=""><code class="mi mj mk ml mm b">^</code><strong class="kx fy">:</strong> Соответствует начальной позиции любой строки.</li>
<li id="2e46" class="lz ma ij kx b ky mn lb mo le mp li mq lm mr lq me mf mg mh jp" data-selectable-paragraph=""><code class="mi mj mk ml mm b">[^b]at</code> соответствует всем строкам, за <code class="mi mj mk ml mm b">.at</code> исключением &#171;bat&#187;. Поэтому при использовании <code class="mi mj mk ml mm b">^</code> в квадратных скобках следующая буква исключается.</li>
<li><code class="mi mj mk ml mm b">^[hc]at</code> соответствует  &#171;hat&#187; и &#171;cat&#187;, но только в начале строки.</li>
<li>\ Backspace экранирует точку, поэтому наше регулярное выражение не считает, что это часть наших квантификаторов, как определено выше. Нам нужно, чтобы точка была буквально частью нашего шаблона, поскольку она находится в нашем поисковом шаблоне.</li>
</ul>
<h3></h3>
<h3></h3>
<h1>Работа с модулем Re. Import re</h1>
<h2>RegEx в Python</h2>
<p><strong>Регулярные выражения &#8212;</strong> это, по сути, крошечный узкоспециализированный язык программирования, встроенный в Python и доступный через модуль <strong>re</strong>.</p>
<p>Используя этот небольшой язык, вы указываете правила для набора возможных строк, которые вы хотите сопоставить:</p>
<ul>
<li>этот набор может содержать английские предложения,</li>
<li>или адреса электронной почты,</li>
<li>или команды TeX,</li>
<li>и т.д.</li>
</ul>
<p>Затем вам необходимо задать такие вопросы, как «Соответствует ли эта строка шаблону?» или «Есть ли где-нибудь в этой строке совпадение с шаблоном?».</p>
<p><strong>Модель RE</strong> также можно использовать для изменения строки или разделения ее на части различными способами.</p>
<p>Шаблоны регулярных выражений компилируются в серию байт-кодов, которые затем выполняются механизмом сопоставления, написанным на C определенным образом для создания байт-кода, который работает быстрее.</p>
<p><span>Язык регулярных выражений относительно мал и ограничен, поэтому не все возможные задачи обработки строк можно выполнить с помощью регулярных выражений. Есть также задачи, которые </span><em><span>можно</span></em><span> решить с помощью регулярных выражений, но выражения получаются очень сложными. В этих случаях вам может быть лучше написать код Python для обработки; в то время как код Python будет медленнее, чем сложное регулярное выражение, он также, вероятно, будет более понятным.</span></p>
<h3>Вводный пример RegEx на Python</h3>
<p>Когда вы импортировали <code class="w3-codespan">re</code> модуль, вы можете начать использовать регулярные выражения:</p>
<p><strong>Пример &#8212; Проверим строку, что она начинается с &#8216;The&#8217; и заканчивается &#8216;Spain&#8217;:</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">import re

#Check if the string starts with "The" and ends with "Spain":

txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)

if x:
  print("YES! We have a match!")
else:
  print("No match")</pre>
<p><strong>Результат:</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">YES! We have a match!</pre>
<h2>Функции RegEx</h2>
<p>Регулярные выражения компилируются в объекты шаблонов, которые имеют методы для различных операций, таких как поиск совпадений с шаблоном или выполнение подстановки строк.</p>
<p>Модуль <code class="w3-codespan">re</code> предоставляет набор функций/методов, которые позволяют нам искать строку по совпадению:</p>
<ul>
<li><strong>findall()</strong> &#8212; Возвращает список, содержащий все совпадения</li>
<li><strong>search()</strong> &#8212; Возвращает объект Match, если где-либо в строке есть совпадение</li>
<li><strong>split()</strong> &#8212; Возвращает список, в котором строка была разделена при каждом совпадении</li>
<li><strong>sub()</strong> &#8212; Заменяет одно или несколько совпадений строкой</li>
<li><strong>subn()</strong> &#8212; Делает то же самое, что и sub(), но возвращает новую строку и количество замен</li>
<li><strong>match()</strong> &#8212; Ищет совпадение с начала строки</li>
<li><strong>finditer()</strong> &#8212; Ищет все совпадения с <code>pattern</code>, возвращает итератор</li>
<li><strong>compile()</strong> &#8212; Компилирует regular expression, на выходе получаем объект, к которому затем можно применять все перечисленные функции</li>
<li><strong>fullmatch()</strong> &#8212; Проверяет, что вся строка соответствует описанному регулярному выражению</li>
<li><strong>flags (флаги)</strong> &#8212; Указываются в функциях, влияют на поведение регулярного выражения</li>
</ul>
<h2>Metacharacters (Метасимволы)</h2>
<p><strong>Метасимволы</strong> &#8212; это символы со специальным значением:</p>
<table width="626">
<tbody>
<tr>
<td width="114"><strong>Meta Character</strong></td>
<td width="512"><strong>Описание</strong></td>
</tr>
<tr>
<td width="114">[&#8230;]</td>
<td width="512">Набор символов</td>
</tr>
<tr>
<td width="114">[^&#8230;]</td>
<td width="512">Отрицательный класс символов. Соответствует любому символу, не заключенному в квадратные скобки</td>
</tr>
<tr>
<td width="114">\</td>
<td width="512">Сообщает о специальной последовательности (также может использоваться для экранирования специальных символов)</td>
</tr>
<tr>
<td width="114">.</td>
<td width="512">Любой символ (кроме символа новой строки)</td>
</tr>
<tr>
<td width="114">^</td>
<td width="512">Начинается с</td>
</tr>
<tr>
<td width="114">$</td>
<td width="512">Заканчивается на</td>
</tr>
<tr>
<td width="114">*</td>
<td width="512">Ноль или более случаев</td>
</tr>
<tr>
<td width="114">+</td>
<td width="512">Одно или несколько случаев</td>
</tr>
<tr>
<td width="114">?</td>
<td width="512">Ноль или одно вхождение</td>
</tr>
<tr>
<td width="114">{}</td>
<td width="512">Ровно указанное количество вхождений</td>
</tr>
<tr>
<td width="114">{n,m}</td>
<td width="512">Соответствует не менее &#171;n&#187;, но не более &#171;m&#187; повторений предыдущего символа.</td>
</tr>
<tr>
<td width="114">|</td>
<td width="512">Чередование. Соответствует символам до или после символа |</td>
</tr>
<tr>
<td width="114">()</td>
<td width="512">Захват и группировка</td>
</tr>
<tr>
<td width="114">(xyz)</td>
<td width="512">Группа символов. Соответствует символам xyz именно в этом порядке.</td>
</tr>
</tbody>
</table>
<h2>Special Sequences RegEx (Специальные последовательности)</h2>
<p><strong>Специальная последовательность</strong> &#8212; это когда за символом <code class="w3-codespan">\</code> следует один из символов в списке ниже, которая имеет особое значение:</p>
<table width="626">
<tbody>
<tr>
<td width="114"><strong>Character</strong></td>
<td width="512"><strong>Описание</strong></td>
</tr>
<tr>
<td width="114">\A</td>
<td width="512">Возвращает совпадение, если указанные символы находятся в начале строки</td>
</tr>
<tr>
<td width="114">\b</td>
<td width="512">Возвращает совпадение, в котором указанные символы находятся в начале или в конце слова</td>
</tr>
<tr>
<td width="114">\B</td>
<td width="512">Возвращает совпадение, в котором указанные символы присутствуют, но НЕ в начале (или в конце) слова</td>
</tr>
<tr>
<td width="114">\d</td>
<td width="512">Возвращает совпадение, в котором строка содержит цифры (числа от 0 до 9)</td>
</tr>
<tr>
<td width="114">\D</td>
<td width="512">Возвращает совпадение, в котором строка НЕ ​​содержит цифр</td>
</tr>
<tr>
<td width="114">\s</td>
<td width="512">Возвращает совпадение, в котором строка содержит символ пробела</td>
</tr>
<tr>
<td width="114">\S</td>
<td width="512">Возвращает совпадение, в котором строка НЕ ​​содержит пробела</td>
</tr>
<tr>
<td width="114">\w</td>
<td width="512">Возвращает совпадение, в котором строка содержит любые символы слова (символы от a до Z, цифры от 0 до 9 и символ подчеркивания _ )</td>
</tr>
<tr>
<td width="114">\W</td>
<td width="512">Возвращает совпадение, в котором строка НЕ ​​содержит символов слова</td>
</tr>
<tr>
<td width="114">\Z</td>
<td width="512">Возвращает совпадение, если указанные символы находятся в конце строки</td>
</tr>
</tbody>
</table>
<h2>Sets (Наборы)</h2>
<p><strong>Set (Набор)</strong> &#8212; это набор символов внутри пары квадратных скобок <code class="w3-codespan">[]</code> со специальным значением:</p>
<table width="626">
<tbody>
<tr>
<td width="114"><strong>Set</strong></td>
<td width="512"><strong>Описание</strong></td>
</tr>
<tr>
<td width="114">[arn]</td>
<td width="512">Возвращает совпадение, в котором присутствует один из указанных символов (a, r или n)</td>
</tr>
<tr>
<td width="114">[a-n]</td>
<td width="512">Возвращает совпадение для любого символа нижнего регистра в алфавитном порядке от a до n</td>
</tr>
<tr>
<td width="114">[^arn]</td>
<td width="512">Возвращает совпадение для любого символа, ЗА ИСКЛЮЧЕНИЕМ a, r и n</td>
</tr>
<tr>
<td width="114">[0123]</td>
<td width="512">Возвращает совпадение, в котором присутствует любая из указанных цифр (0, 1, 2 или 3)</td>
</tr>
<tr>
<td width="114">[0-9]</td>
<td width="512">Возвращает совпадение для любой цифры от 0 до 9</td>
</tr>
<tr>
<td width="114">[0-5][0-9]</td>
<td width="512">Возвращает совпадение для любых двузначных чисел от 00 до 59</td>
</tr>
<tr>
<td width="114">[a-zA-Z]</td>
<td width="512">Возвращает соответствие для любого символа в алфавитном порядке от a до z, в нижнем регистре ИЛИ в верхнем регистре</td>
</tr>
<tr>
<td width="114">[+]</td>
<td width="512">В наборах + * . | () $ {} знак не имеет особого значения, поэтому [+] означает: вернуть совпадение для любого символа + в строке</td>
</tr>
</tbody>
</table>
<h2>Символ \ &#8212; бэкслеш в Python RegEx</h2>
<p>Регулярные выражения используют символ обратной косой черты (<strong>&#8216;\&#8217;</strong>) для обозначения специальных форм или для разрешения использования специальных символов без обращения к их особому значению. Это противоречит тому, что Python использует тот же символ для той же цели в строковых литералах.</p>
<p>Допустим, вы хотите написать RE, который соответствует строке <strong>\section</strong>, которая может быть найдена в файле. Чтобы понять, что писать в программном коде, начните с нужной строки для сопоставления. Затем вы должны экранировать обратную косую черту и другие метасимволы, предваряя их обратной косой чертой, в результате чего получится строка <strong>\\section</strong>.</p>
<p>Результирующая строка, которую необходимо передать, <code class="EnlighterJSRAW" data-enlighter-language="generic">re.compile()</code> должна быть <strong>\\section</strong>. Однако, чтобы выразить это как строковый литерал Python, обе обратные косые черты должны быть снова экранированы.</p>
<table class="docutils align-default">
<colgroup>
<col />
<col /></colgroup>
<thead>
<tr class="row-odd">
<th class="head"><span>Символы</span></th>
<th class="head"><span>Этап</span></th>
</tr>
</thead>
<tbody>
<tr class="row-even">
<td><code class="docutils literal notranslate"><span class="pre">\section</span></code></td>
<td><span>Текстовая строка для сопоставления</span></td>
</tr>
<tr class="row-odd">
<td><code class="docutils literal notranslate"><span class="pre">\\section</span></code></td>
<td><span>Экранированная обратная косая черта для </span><a class="reference internal" title="перекомпилировать" href="https://docs.python.org/3/library/re.html#re.compile"><code class="xref py py-func docutils literal notranslate"><span class="pre">re.compile()</span></code></a></td>
</tr>
<tr class="row-even">
<td><code class="docutils literal notranslate"><span class="pre">"\\\\section"</span></code></td>
<td><span>Экранированные символы обратной косой черты для строкового литерала</span></td>
</tr>
</tbody>
</table>
<p>Решение состоит в том, чтобы использовать для регулярных выражений нотацию необработанных строк Python. Обратная косая черта не обрабатывается каким-либо особым образом в строковом литерале с префиксом &#8216;r&#8217;:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">r"\\section"</pre>
<p>Регулярные выражения часто записываются в коде Python с использованием этой записи необработанных строк:</p>
<table class="docutils align-default">
<thead>
<tr class="row-odd">
<th class="head">Regular String</th>
<th class="head">Raw string</th>
</tr>
</thead>
<tbody>
<tr class="row-even">
<td><code class="docutils literal notranslate"><span class="pre">"ab*"</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">r"ab*"</span></code></td>
</tr>
<tr class="row-odd">
<td><code class="docutils literal notranslate"><span class="pre">"\\\\section"</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">r"\\section"</span></code></td>
</tr>
<tr class="row-even">
<td><code class="docutils literal notranslate"><span class="pre">"\\w+\\s+\\1"</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">r"\w+\s+\1"</span></code></td>
</tr>
</tbody>
</table>
<h2>Проверка и тестирование регулярных выражений</h2>
<ul>
<li><a href="https://regex101.com/" target="_blank" rel="noopener">https://regex101.com/</a> &#8212; интерактивная консоль регулярных выражений, которая позволяет отлаживать выражения в режиме реального времени. Это означает, что вы можете создавать свои выражения и одновременно видеть, как они влияют на набор данных в реальном времени на одном экране. Инструмент был создан Фирасом Дибом при участии многих других разработчиков. Это крупнейший сервис тестирования регулярных выражений в мире.</li>
<li><a href="http://www.pyregex.com/" target="_blank" rel="noopener">http://www.pyregex.com/</a> &#8212; онлайн-тестер регулярных выражений для проверки правильности регулярных выражений в подмножестве регулярных выражений языка Python.</li>
<li><a href="https://pythex.org/" target="_blank" rel="noopener">https://pythex.org/</a> &#8212; Pythex is a real-time regular expression editor for Python, a quick way to test your regular expressions.</li>
</ul>
<h2>Функция findall()</h2>
<p><strong>Определение функции</strong></p>
<p>Функция <code class="w3-codespan">findall()</code> возвращает список, содержащий все совпадения.</p>
<p>Модуль <code class="w3-codespan">findall()</code> используется для поиска «всех» вхождений, соответствующих заданному шаблону. Напротив, модуль <code class="w3-codespan">search()</code> вернет только первое вхождение, соответствующее указанному шаблону. <strong>findall()</strong> перебирает все строки файла и возвращает все непересекающиеся совпадения шаблона за один шаг.</p>
<p><strong>Синтаксис</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">re.findall(pattern, string, flags=0)</pre>
<p><strong>Пример использования</strong></p>
<h2>Функция search()</h2>
<p><strong>Определение функции</strong></p>
<p>Функция <code class="w3-codespan">search()</code> будет искать шаблон регулярного выражения и возвращать первое вхождение. В отличие от Python <code class="w3-codespan">match()</code>, он проверяет все строки входной строки. Функция Python <code class="w3-codespan">search()</code> возвращает объект соответствия, когда шаблон найден, и «ноль», если шаблон не найден.</p>
<p><strong>Синтаксис</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">re.search(pattern, string, flags=0)</pre>
<p><strong>Пример использования</strong></p>
<p>туду</p>
<h2>Функция split()</h2>
<p><strong>Определение функции</strong></p>
<p>Функция <strong>split()</strong> работает аналогично методу split в строках, но в функции <strong>re.split</strong> можно использовать регулярные выражения, а значит, разделять строку на части по более сложным условиям.</p>
<p><strong>Синтаксис</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">re.split(pattern, string, maxsplit=0, flags=0)</pre>
<p><strong>Пример использования</strong></p>
<p>туду</p>
<h2>Функция sub()</h2>
<p><strong>Определение функции</strong></p>
<p>Функция re.sub работает аналогично методу replace в строках. Но в функции re.sub можно использовать регулярные выражения, а значит, делать замены по более сложным условиям.</p>
<p><strong>Синтаксис</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">re.sub(pattern, repl, string, count=0, flags=0)</pre>
<p><strong>Пример использования</strong></p>
<p>туду</p>
<h2>Функция subn()</h2>
<p><strong>Определение функции</strong></p>
<p>Функция subn() аналогична sub(), но возвращает новую строку и количество произведенных замен.</p>
<p><strong>Синтаксис</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">re.subn(pattern, repl, string, count=0, flags=0)</pre>
<p><strong>Пример использования</strong></p>
<p>туду</p>
<h2>Функция match()</h2>
<p><strong>Определение функции</strong></p>
<p>Функция re.match() re в Python будет искать шаблон регулярного выражения только в начале строки. Функция match() возвращает объект соответствия, если часть начала строки подпадает под шаблон, иначе функция вернет None.</p>
<p><strong>Синтаксис</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">re.match(pattern, string, flags=0)</pre>
<p><strong>Пример использования</strong></p>
<p>туду</p>
<h2>Функция fullmatch()</h2>
<p><strong>Определение функции</strong></p>
<p>Функция <strong>re.fullmatch()</strong> вернет объект сопоставления, если вся исходная строка соответствует шаблону Regular Expression.</p>
<p><strong>Синтаксис</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">re.fullmatch(pattern, string, flags=0)</pre>
<p><strong>Пример использования</strong></p>
<p>туду</p>
<h2>Функция compile()</h2>
<p><strong>Определение функции</strong></p>
<p>В Python есть возможность заранее скомпилировать регулярное выражение, а затем использовать его. Это особенно полезно в тех случаях, когда регулярное выражение много используется в скрипте.</p>
<p>Использование компилированного выражения может ускорить обработку, и, как правило, такой вариант удобней использовать, так как в программе разделяется создание регулярного выражения и его использование. Кроме того, при использовании функции <code class="docutils literal notranslate"><span class="pre">re.compile</span></code> создается объект <code class="docutils literal notranslate"><span class="pre">RegexObject</span></code>, у которого есть несколько дополнительных возможностей, которых нет в объекте <code class="docutils literal notranslate"><span class="pre">MatchObject</span></code>.</p>
<p><strong>Синтаксис</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">re.compile(pattern, flags=0)</pre>
<p><strong>Пример использования</strong></p>
<p>туду</p>
<h2>Функция finditer()</h2>
<p><strong>Определение функции</strong></p>
<p>Метод finditer() используется для поиска всех непересекающихся совпадений в шаблоне и возвращает итератор с объектами Match (finditer возвращает итератор даже в том случае, когда совпадение не найдено). Функция finditer отлично подходит для обработки тех команд, вывод которых отображается столбцами.</p>
<p><strong>Синтаксис</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="python">re.finditer(pattern, string, flags=0)</pre>
<p><strong>Пример использования</strong></p>
<p>туду</p>
<h2>Match Object</h2>
<p><strong>Определение</strong></p>
<p><strong>Match Object</strong> — это объект, содержащий информацию о поиске и результате.</p>
<p><span><strong>Объект Match</strong> имеет свойства и методы, используемые для получения информации о поиске и результате:</span></p>
<ul>
<li><code class="w3-codespan">.span()</code> <span>возвращает кортеж, содержащий начальную и конечную позиции совпадения.</span></li>
<li><code class="w3-codespan">.string</code> <span>возвращает строку, переданную в функцию,</span></li>
<li><code class="w3-codespan">.group()</code> <span>возвращает часть строки, в которой произошло совпадение</span></li>
</ul>
<h2>Flags (флаги)</h2>
<p><strong>Определение Flags</strong></p>
<p>туду</p>
<h1>Примеры решения задач с помощью модуля Re</h1>
<p>туду</p>
<h1>Подборка видео по теме &#171;Regular Expressions в Python&#187;</h1>
<h2>Не бойтесь регулярных выражений. Regex за 20 минут!</h2>
<p><iframe title="Не бойтесь регулярных выражений. Regex за 20 минут!" width="1170" height="658" src="https://www.youtube.com/embed/_pLpx6btq6U?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>
<h2>Python для Начинающих &#8212; Регулярные Выражения</h2>
<p><strong>Часть 1</strong></p>
<p><iframe title="23.Python для Начинающих - Регулярные Выражения Часть1" width="1170" height="658" src="https://www.youtube.com/embed/zHJUUmmmnU8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>
<p><strong>Часть 2</strong></p>
<p><iframe title="24.Python для Начинающих - Регулярные Выражения Часть2" width="1170" height="658" src="https://www.youtube.com/embed/gH60YkI4xic?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>
<h2>Python с нуля. Регулярные выражения</h2>
<p><strong>Часть 1</strong></p>
<p><iframe title="Python с нуля. Урок 12 | Регулярные выражения. Часть 1." width="1170" height="658" src="https://www.youtube.com/embed/_PSyCOuueFs?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>
<p><strong>Часть 2</strong></p>
<p><iframe title="Python с нуля. Урок 13 | Регулярные выражения. Часть 2." width="1170" height="658" src="https://www.youtube.com/embed/kbeC4djs0mo?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>
<h3>Python 3. Регулярные выражения &#8212; плейлист</h3>
<p><a href="https://www.youtube.com/playlist?list=PLA0M1Bcd0w8w8gtWzf9YkfAxFCgDb09pA" target="_blank" rel="noopener">Ссылка на плейлист &gt;&gt;&gt;</a></p>
<p><iframe title="Регулярные выражения #1: литералы и символьный класс" width="1170" height="658" src="https://www.youtube.com/embed/1SWGdyVwN3E?list=PLA0M1Bcd0w8w8gtWzf9YkfAxFCgDb09pA" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>
<p><a class="a2a_button_telegram" href="https://www.addtoany.com/add_to/telegram?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-3-regular-expressions-regex-match-group-string%2F&amp;linkname=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5%20%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B2%20Python%20%28regex%20find%20match%20groups%20replace%20string%29" title="Telegram" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-3-regular-expressions-regex-match-group-string%2F&amp;linkname=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5%20%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B2%20Python%20%28regex%20find%20match%20groups%20replace%20string%29" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-3-regular-expressions-regex-match-group-string%2F&amp;linkname=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5%20%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B2%20Python%20%28regex%20find%20match%20groups%20replace%20string%29" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-3-regular-expressions-regex-match-group-string%2F&amp;linkname=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5%20%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B2%20Python%20%28regex%20find%20match%20groups%20replace%20string%29" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_vk" href="https://www.addtoany.com/add_to/vk?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-3-regular-expressions-regex-match-group-string%2F&amp;linkname=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5%20%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B2%20Python%20%28regex%20find%20match%20groups%20replace%20string%29" title="VK" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-3-regular-expressions-regex-match-group-string%2F&amp;linkname=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5%20%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B2%20Python%20%28regex%20find%20match%20groups%20replace%20string%29" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-3-regular-expressions-regex-match-group-string%2F&amp;linkname=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5%20%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B2%20Python%20%28regex%20find%20match%20groups%20replace%20string%29" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fpython.ivan-shamaev.ru%2Fpython-3-regular-expressions-regex-match-group-string%2F&#038;title=%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5%20%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B2%20Python%20%28regex%20find%20match%20groups%20replace%20string%29" data-a2a-url="https://python.ivan-shamaev.ru/python-3-regular-expressions-regex-match-group-string/" data-a2a-title="Регулярные выражения в Python (regex find match groups replace string)"></a></p><p>Сообщение <a href="https://python.ivan-shamaev.ru/python-3-regular-expressions-regex-match-group-string/">Регулярные выражения в Python (regex find match groups replace string)</a> появились сначала на <a href="https://python.ivan-shamaev.ru">Python 3 | Data Science | Нейронные сети | AI - Искусственный Интеллект</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://python.ivan-shamaev.ru/python-3-regular-expressions-regex-match-group-string/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
