ruby - 正则表达式在电子邮件的原始正文中查找 Base64 (Ruby)

标签 ruby regex email base64

好的,我正在尝试使用正则表达式在电子邮件字符串中查找 Base64 图像。

该特定 Base64 字符串的最后两行如下所示:

ublR+iVp4k0KLTdJt7jULC0uIrZY3UkJuYZ56859aK+Ftc1H4ja5ei+0a2s49M2BIt+CSBnuQc0V
6tLIrxTsdiZ//9k=

好的,这是我的正则表达式

^(?:[A-Za-z0-9+\//n]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=|[A-Za-z0-9+\/]{4})$

为了我自己的理智而崩溃

^(?:[A-Za-z0-9+\/\n]{4}) 字符串的开头应有四个字符(即 Base64 有效的字符,以及新行)

* 这应该至少发生一次,但可能会发生很多次

(...)$ 在字符串末尾...

[A-Za-z0-9+\/]{2}== 给我两个字符和两个缓冲区

|或...

[A-Za-z0-9+\/]{3}= 三个字符和一个缓冲区

|或...

[A-Za-z0-9+\/] 四个字符,如之前


所以

当我运行时

/^(?:[A-Za-z0-9+\/\n]{4})*(?:[A-Za-z0-9+\/]{2}== |[A-Za-z0-9+\/]{3}=|[A-Za-z0-9+\/\n]{4})$/.match(email.raw_body)

它只匹配到倒数第二行的末尾。

但是

当我运行时

/^(?:[A-Za-z0-9+\/\n]{4})*(?:[A-Za-z0-9+\/]{2}== |[A-Za-z0-9+\/]{3}=)$/.match(email.raw_body)

它确实有效。

所以这似乎是最后一个或 | 语句似乎有点缺陷。

有人可以提供一个好的建议吗?这对快速衰老的人有很大帮助。 :-)

最佳答案

使用正则表达式

input.match /^(?:[A-Za-z0-9+\/]{4}\n?)*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/

参见this demo

关于ruby - 正则表达式在电子邮件的原始正文中查找 Base64 (Ruby),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21267288/

相关文章:

php - 在页面 http 和 https 中进行正则表达式搜索

ruby - 是否可以连接两个正则表达式变量?

linux - 无法从linux命令发送邮件

android - 使用 Intent URI 启动我的应用程序

Ruby 结构 - 性能开销?

php - 关于将 PHP 应用程序转换为 ROR 以与 Heroku 一起使用的想法?

android - Chrome DevTools 远程调试不显示连接的移动设备的 chrome 版本

javascript正则表达式从字符串中删除子字符串

python - 在 Heroku 上发送 Django 电子邮件

ruby - 2 if语句中的条件