<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title>www.ritlabs.com [тема: Регулярка по сбору e-mail]</title>
		<link>http://www.ritlabs.com</link>
		<description>Новое в теме Регулярка по сбору e-mail форума  на сайте www.ritlabs.com [www.ritlabs.com]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<lastBuildDateTag>Wed, 19 Jan 2022 02:44:20 +0200</lastBuildDateTag>		<item>
			<title>Регулярка по сбору e-mail</title>
			<description><![CDATA[<b><a href="http://www.ritlabs.com/ru/forums/forum2/topic15451/message52876/">Регулярка по сбору e-mail</a></b> в форуме <a href="http://www.ritlabs.com/ru/forums/forum2/">Шаблоны и быстрые шаблоны</a>. <br />
			Невозможно просто и легко сохранить в адресную книгу все адреса e-mail, включенные в тело письма. Можно экспортировать только один адрес. Таким образом, всю задачу следует разбить на два этапа:<br /><br />- <B>Экспорт всех адресов из тела письма в текстовый файл</B> (по одному адресу в строке). Эту операцию можно выполнить с помощью фильтра, запускаемого по горячей клавише.<br /><br />- <B>Импорт адресов из текстового файла в адресную книгу</B> (в книге уже есть встроенные функции для импорта адресов из файла).<br /><br />К сожалению, Вы не можете использовать простое регулярное выражение для извлечения адресов из сообщений, но используйте рекурсию в быстрых шаблонах. Для этого определите два шаблона (например, в группе общих шаблонов).<br /><br />1. Шаблон с именем «<B>adr</B>» предварительно определяет переменные, используемые в операции удаления адреса, и вызывает рекурсивный шаблон. Он имеет следующий вид:<br />
====code====
<pre>%_MailBody(%OText)%-
%_MailAddr="%SetPattRegExp='(&#91;_&#92;w&#92;-&#92;.&#92;+&#93;+@(&#91;_&#92;w&#92;-&#93;+(&#92;.&#91;_&#92;w&#92;-&#93;+)+))'%-
%RegExpMatch(%_MailBody)"%-
%-
%IF:"%_MailAddr"&#60;&#62;""%-
:%-
"%_Att_Items='1:%_MailBody'%-
%Qinclude(adr2)"%-</pre>
=============
<br />2. Второй шаблон «<B>adr2</B>» работает рекурсивно (вызывает сам себя, пока не найдет последний адрес):<br />
====code====
<pre>%If:"%-
%SetPattRegExp='(?i)(&#91;_&#92;w&#92;-&#92;.&#92;+&#93;+@(&#91;_&#92;w&#92;-&#93;+(&#92;.&#91;_&#92;w&#92;-&#93;+)+))'%RegExpMatch(%_Att_Items)"&#60;&#62;""%-
:"%-
%SetPattRegExp='(?im)^(&#92;d+):&#92;s*(.*?)(&#92;s|&#60;)*(&#91;_&#92;w&#92;-&#92;.&#92;+&#93;+@(&#91;_&#92;w&#92;-&#93;+(&#92;.&#91;_&#92;w&#92;-&#93;+)+))(.*)'%-
%RegExpBlindMatch(%_Att_Items)%-
%SubPatt(4)
%-
%_Curr_No='%SetPattRegExp=""^(&#92;d+):""%RegExpMatch(%_Att_Items)'%-
%_Next_No(%Calc='1+%_Curr_No')%-
%SetPattRegExp='(?im)^(&#92;d+):&#92;s*(.*?)(&#92;s|&#60;)*(&#91;_&#92;w&#92;-&#92;.&#92;+&#93;+@(&#91;_&#92;w&#92;-&#93;+(&#92;.&#91;_&#92;w&#92;-&#93;+)+))(.*)'%-
%RegExpBlindMatch(%_Att_Items)%-
%_Att_Items(%_Next_No:%SubPatt(7))%-
%-
%Qinclude(adr2)"%-
:"%-
%SetPattRegExp='(?im)^(&#92;d+):&#92;s*(.*?)(&#92;s|&#60;)*(&#91;_&#92;w&#92;-&#92;.&#92;+&#93;+@(&#91;_&#92;w&#92;-&#93;+(&#92;.&#91;_&#92;w&#92;-&#93;+)+))(.*)'%-
%RegExpBlindMatch(%_Att_Items)%-
%SubPatt(4)"%-</pre>
=============
Определив эти два шаблона, создайте фильтр, который будет экспортировать письмо в текстовый файл, используя очень простой шаблон:<br />
====code====
<pre>%QInclude(adr)%-</pre>
=============
<br />Импорт адресов в вашу книгу не должен быть проблемой. <br />
			<i>19.01.2022 02:44:20, <a href="http://www.ritlabs.com/ru/forums/">Zygmunt Wereszczyński</a>.</i>]]></description>
			<link>http://www.ritlabs.com/ru/forums/forum2/topic15451/message52876/</link>
			<guid>http://www.ritlabs.com/ru/forums/forum2/topic15451/message52876/</guid>
			<pubDate>Wed, 19 Jan 2022 02:44:20 +0200</pubDate>
			<category>Шаблоны и быстрые шаблоны</category>
		</item>
		<item>
			<title>Регулярка по сбору e-mail</title>
			<description><![CDATA[<b><a href="http://www.ritlabs.com/ru/forums/forum2/topic15451/message52487/">Регулярка по сбору e-mail</a></b> в форуме <a href="http://www.ritlabs.com/ru/forums/forum2/">Шаблоны и быстрые шаблоны</a>. <br />
			Обновлённая версия 9.4.5. <br />Раньше извлекался только первый e-mail, а теперь e-mails по регулярке из тела письма вообще не собираются. <br />Н-да, печалька... <br />
			<i>01.11.2021 10:56:00, <a href="http://www.ritlabs.com/ru/forums/">Игорь Акулюшин</a>.</i>]]></description>
			<link>http://www.ritlabs.com/ru/forums/forum2/topic15451/message52487/</link>
			<guid>http://www.ritlabs.com/ru/forums/forum2/topic15451/message52487/</guid>
			<pubDate>Mon, 01 Nov 2021 10:56:00 +0200</pubDate>
			<category>Шаблоны и быстрые шаблоны</category>
		</item>
		<item>
			<title>Регулярка по сбору e-mail</title>
			<description><![CDATA[<b><a href="http://www.ritlabs.com/ru/forums/forum2/topic15451/message52315/">Регулярка по сбору e-mail</a></b> в форуме <a href="http://www.ritlabs.com/ru/forums/forum2/">Шаблоны и быстрые шаблоны</a>. <br />
			<B>Задача:</B> извлечь все e-mail из тела письма и сохранить их в определенную папку адресной книги. <br /><B>Не получается:</B> вытаскивается только первый e-mail из тела письма и на этом всё. До прочих не доходит и соответственно в адресную они не попадают. <br /><br /><B>Сделано все так:</B> создано правило сортировки, которое запускается по горячей клавише<br />Общие<br />Условие: Любое письмо<br />Действия: Добавить адреса из Message Body в группы “&&”<br />Детализация данной настройки:<br />Поля заголовка, откуда добавляются адреса: везде галка снята<br />Добавить адреса из текста письма, используя шаблон: <br />%REGEXPTEXT="[a-zA-Z0-9._%+-]+@+[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}"<br />Добавить адреса в эти группы: &&<br /><br />В результате работы регулярки в адресную книгу в группу && добавляется <U>только первый e-mail из текста</U> сообщения даже если в письме их сотни. Почему так не ясно. Это первый опыт с регулярками и возможно для знающего человека ошибка очевидна.<br /><br /><table class="forum-spoiler"><thead onclick="if(this.nextSibling.style.display=='none') { this.nextSibling.style.display=''; BX.addClass(this, 'forum-spoiler-head-open'); } else { this.nextSibling.style.display='none'; BX.removeClass(this, 'forum-spoiler-head-open'); } BX.onCustomEvent('BX.Forum.Spoiler:toggle', [{node: this}]);"><tr><th><div>Скрытый текст</div></th></tr></thead><tbody class="forum-spoiler" style="display:none;"><tr><td>Тестировал в нескольких тестерах и там нормально:<br /><noindex><a href="https://tools.icoder.uz/regex-tester.php" target="_blank" rel="nofollow">https://tools.icoder.uz/regex-tester.php</a></noindex><br /><noindex><a href="https://regex101.com/" target="_blank" rel="nofollow">https://regex101.com/</a></noindex><br />Там везде регулярка находится все e-mail корректно, если запущен режим «global» и находит только первый e-mail, если используются другие режимы. </td></tr></tbody></table> <br />
			<i>27.09.2021 21:05:25, <a href="http://www.ritlabs.com/ru/forums/">Игорь Акулюшин</a>.</i>]]></description>
			<link>http://www.ritlabs.com/ru/forums/forum2/topic15451/message52315/</link>
			<guid>http://www.ritlabs.com/ru/forums/forum2/topic15451/message52315/</guid>
			<pubDate>Mon, 27 Sep 2021 21:05:25 +0300</pubDate>
			<category>Шаблоны и быстрые шаблоны</category>
		</item>
	</channel>
</rss>
