Regex, чтобы получить тело сырой электронной почты в формате RFC 822 - PullRequest
0 голосов
/ 27 мая 2018
Subject: test MIME-Version: 1.0 Content-Type: multipart/alternative; 
         boundary"----_Part_1631742_816935001.1527406760596" References: <414671049.1631743.1527406760597.ref@mail.yahoo.com>
X-Mailer: WebService/1.1.11897 YMailNorrin Mozilla/5.0 (Macintosh;
Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/66.0.3359.139 Safari/537.36 Content-Length: 416

------_Part_1631742_816935001.1527406760596 Content-Type: text/plain; charsetUTF-8 Content-Transfer-Encoding: 7bit

test
------_Part_1631742_816935001.1527406760596 Content-Type: text/html; charsetUTF-8 Content-Transfer-Encoding: 7bit

<html><head></head><body><div style"font-family:lucida console,
sans-serif;font-size:24px;"><div>test</div></div></body></html>
------_Part_1631742_816935001.1527406760596--

Я только пытаюсь получить следующий фрагмент:

Content-Type: text/plain; charsetUTF-8 

Content-Transfer-Encoding: 7bit

"test"

---

В основном, что-нибудь между 7-битным и три-х.

Я пробовал следующие регулярные выражения w/ o success: Regex # 1: Content-Type: text/plain;(.*)(\n\n)(.*)---

Я думал, что смогу использовать группы захвата для получения контента, но у меня возникают всевозможные проблемы.Я использую терминал MacOS и pcre.

1 Ответ

0 голосов
/ 27 мая 2018

В PCRE . не содержит нескольких строк.Вам нужен однострочный модификатор, чтобы . включал их.Попробуйте добавить (?s) к своему регулярному выражению, например:

(?s)Content-Type: text/plain;(.*)(\n\n)(.*)---

В качестве альтернативы вы можете использовать:

Content-Type: text/plain; charsetUTF-8 Content-Transfer-Encoding: 7bit\s*([\s\S]*?)-{3}
...