使用Perl Regex如何从以下内容获取 base64 之后的 IWantThisText 文本块:
Content-Type: text/html; charset="KOI8-R"
Content-Disposition: inline
Content-Transfer-Encoding: base64
IWantThisTextIWantThisTextIWantThisTextIWantThisTextIWantThisTextIWantThisTex
tIWantThisTextIWantThisTextIWantThisTextIWantThisTextIWantThisTextIWantThisTe
xtIWantThisTextIWantThisTextIWantThisTextIWantThisTextIWantThisTextIWantThisT
extIWantThisTextIWantThisTextIWantThisTextIWantThisTextIWantThisTextIWantThis
TextIWantThisTextIWantThisTextIWantThisTextIWantThisTextIWantThisTextIWantThi
sTextIWantThi
编辑:
到目前为止我所拥有的:
my ($textIWant) = $textblock =~ m/base64(.*?)/;
答案 0 :(得分:2)
您想要MIME消息的正文。身体通过空白线与标题分开。所以,只需连续检查两个换行符。
my ($body) = $mime_message =~ /\n\r?\n(.*)/s;
它处理MIME使用的标准CRLF换行符,但它也只处理LF。
答案 1 :(得分:0)
如果您将整个文件放在变量$textblock
中,则可以通过从{{1}中删除base64
非贪婪修饰符,在第一次出现?
后提取所有内容并将(.*?)
修饰符添加到示例代码中。
区别在于/s
通常匹配除字符串末尾的换行符之外的任何内容,因此.
将停在包含{{的行的末尾1}}。添加(.*)
会将其更改为匹配任何字符
base64
会为您提供所需内容,但请注意,它包含/s
之后的所有空格字符和换行符
作为替代方案,您可以在第一次出现my $text_i_want;
$text_i_want = $1 if $textblock =~ /base64(.*)/s;
时将字符串拆分为两个,然后选择第二部分,就像这样
base64
给出相同的结果