Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Нужна регулярка для Content-Type: text/plain в письме (http://forum.oszone.net/showthread.php?t=172193)

timsky 04-04-2010 18:44 1384937

Нужна регулярка для Content-Type: text/plain в письме
 
Пипл, кто силен в регулярках?
Никак не могу слепить универсальную регулярку для выдергивания содержимого Content-Type: text/plain и Content-Type: text/html в письме. Вот пример тела письма:
читать дальше »
--------------Boundary-00=_Q4V2Q7B2QL8000000000
Content-Type: Multipart/Alternative;
boundary="------------Boundary-00=_Q4V2LHG2QL8000000000"


--------------Boundary-00=_Q4V2LHG2QL8000000000
Content-Type: Text/Plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Здесь, например, какой-нибудь текст!
Здесь, например, какой-нибудь текст!
Здесь, например, какой-нибудь текст!

--------------Boundary-00=_Q4V2LHG2QL8000000000
Content-Type: Text/HTML;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-8859-1" http-equiv=3DContent-Typ=
e>
<META name=3DGENERATOR content=3D"IncrediMail 1.0">
<STYLE>v\:* {
BEHAVIOR: url (#default#vml)
}
</STYLE>
<style>v\:* {
BEHAVIOR: url (#default#vml)
}
</style><BASE href=3D"file://C:\"></HEAD> <BODY style=3D"MARGIN: 10px 10p=
x 10px 47px; BACKGROUND-REPEAT: repeat; FONT-FAMILY: Arial; BACKGROUND-POS=
ITION: left top; FONT-SIZE: 10pt" background=3Dcid:1A691D9A-2A07-410B-A9FB=
-5027D63B2D2D scroll=3Dyes bgColor=3D#edf1f0 SIGCOLOR=3D"11031552" INCREDI=
FIXEDFORIMOL=3D"true"> <TABLE id=3DINCREDIMAINTABLE border=3D0 cellSpacin=
g=3D0 cellPadding=3D2 width=3D"100%"> <TBODY> <TR> <TD style=3D"DIRECTI=
ON: ltr; FONT-SIZE: 10pt" dir=3Dltr id=3DINCREDITEXTREGION vAlign=3Dtop wi=
dth=3D"100%"> <DIV>
Здесь, например, какой-нибудь текст!<BR>
Здесь, например, какой-нибудь текст!<BR>
Здесь, например, какой-нибудь текст!<BR>
</DIV></TD></TR> <TR> <TD id=3DINCREDIFOOTER width=3D"100%"> <TABLE ce=
llSpacing=3D0 cellPadding=3D0 width=3D"100%"> <TBODY> <TR> <TD width=3D=
"100%"></TD> <TD id=3DINCREDISOUND vAlign=3Dbottom align=3Dmiddle></TD>=
<TD id=3DINCREDIANIM vAlign=3Dbottom align=3Dmiddle></TD></TR></TBODY></=
TABLE></TD></TR></TBODY></TABLE><SPAN id=3DIncrediStamp><A href=3D"http://=
http://www.incredimail.com/?id=3D606430&amp;rui=3D88054161"><SPAN name=3D"imgCach=
e" border=3D"0"><IMG border=3D0 alt=3D"FREE Animations for your email - by=
IncrediMail! Click Here!" src=3D"cid:97504DF8-22EE-434A-A144-9EA9FAB3F4FF=
"></SPAN>[/url]</SPAN></BODY></HTML>

--------------Boundary-00=_Q4V2LHG2QL8000000000--

--------------Boundary-00=_Q4V2Q7B2QL8000000000
Content-Type: image/jpeg; name="23.jpg"
Content-Transfer-Encoding: base64
Content-ID: <1A691D9A-2A07-410B-A9FB-5027D63B2D2D>

/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAJgAA/+4AIUFkb2JlAGTAAAAAAQMA
EOS/pQ5lDkjyX8Q/qHL8Q5L+lf0/q7vUL3Q5L+BeyK/i/gXd6he6HJfwL2RX8X8C7uX4vdDkv4F7
fq7l/F/AhyXb/EOZXv8AaHJfxdvqF7/aHJdv8Q5le/2hyX8Xb6he/wBocl2/xDmV7/aHJfxdvqF7
/aHJdv8AEOZXv9ocl/F2+oXv9ocl2/xD+ocyhyR5D6X8Q/qHL8Q5L+lDmUOSPJfxD+ocvxDkv6UO
ZQ5I8l/EP6hy/EOS/pX9P6u71C90OS/gXsiv4v4F3eoXuhyX8C9kV/F/Au7l+L3Q5L+Be36u5fxf
wIcl2/xDmV7/AGhyX8Xb6he/2hyXb/EOZXv9ocl/F2+oXv8AaHJdv8Q5le/2hyX8X8/F/9k=

--------------Boundary-00=_Q4V2Q7B2QL8000000000
Content-Type: image/gif; name="stampa_girl_line_en.gif"
Content-Transfer-Encoding: base64
Content-ID: <97504DF8-22EE-434A-A144-9EA9FAB3F4FF>

R0lGODlh3AGMANUAAPb6/JCLqvaVHrkZTQEAAPI6X9iIT7JpYPmxmXWIxIUROax2i85OcmYPMcjV
5tnZ2bjI3am30NB5FWt7trNmCyxQggAA/1lll9eQfFBcj5ZWYv3Os5Sm6HVzm4aY2AJFd+qhhvS6
o2FwqPe3TQs3W8Kzt9rk79milJCozKiirMJ9cMGUm+93jc7GyKG0929FRHhsdQAAAAAAAAAAAAAA
G8BIC8uxXM7mfM7oHMiQbDlAC7GjHA+AnM7yPM/0DMXrXAX2m8/6vM/83M/+/M8AHdACPdAEXdAG
fdAIndAKvdD9PM71/NAQHdH3zKviEM8RfdEYrc6/TNH1YNEZ/dEgrb0TzdHPEFEhfdIoDQA1SdL0
EAFVQ6UwHdMyPdM0baVkEAQAOw==

--------------Boundary-00=_Q4V2Q7B2QL8000000000--
.


Нужно выдрать это:
читать дальше »
Здесь, например, какой-нибудь текст!
Здесь, например, какой-нибудь текст!
Здесь, например, какой-нибудь текст!


Ну или вместе с тегами Content-Type: / charset / Content-Transfer-Encoding и прочими, относящимися к тексту письма.
То же самое, соответственно, должно сработать и для Content-Type: text/html.

Нашел вот такой скрипт Tipulatiod и CreatoR, но он работает только в половине реальных случаев Плюс к тому же он возвращает постоянно разноразмерный массив, а разбирать, как он фунциклирует мне не по зубам.

И вообще каким макаром указать RegExp не глотать все подряд, а остановиться на первом совпадении?
Много чего перепробовал, включая варианты с greedy/не-greedy, lookbehind ит.д..., но все равно PCRE не обращает внимания на то, что мне нужен контент до следующего Content-Type:

Вобщем, я в тупике.

Creat0R 04-04-2010 20:58 1384996

(?si).*?-+Boundary.*?[\r\n]+Content-Type: text/(?:plain|html);[\r\n]+.*?[\r\n]+Content-Transfer.*?[\r\n]+([^(-+Boundary)]*?)[\r\n]+-+Boundary.*

timsky 05-04-2010 00:30 1385120

Огромное спасибо Creat0R за решение проблемы на дружественном форуме: http://autoit-script.ru/index.php?topic=1474


Время: 15:28.

Время: 15:28.
© OSzone.net 2001-