首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用regex的procmail食谱不起作用

使用regex的procmail食谱不起作用
EN

Unix & Linux用户
提问于 2014-02-26 00:18:29
回答 3查看 2.2K关注 0票数 3

在我的~/.procmailrc中,我有以下几行:

代码语言:javascript
复制
:0
\* ^Subject:.*(O|o)pen( \|)(S|s)(onic|urge)
$MAILDIR/OpenSurge/

正如您所看到的,我希望将包含“OpenSurge”(或任何带有空格或大写字母的变体)的邮件放在OpenSurge文件夹中。但是,包含这个单词的消息只进入默认文件夹。

注意,我有很多关于^From:foo的其他菜谱,当我尝试^Subject:.*OpenSurge时,我的菜谱使用“OpenSurge”,但是我不使用regexp ^Subject:.*(O|o)pen( \|)(S|s)(onic|urge)

那么,我怎样才能与正则表达式匹配所有写“开放浪潮”的可能性呢?

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2014-02-26 00:45:37

这个怎么样:

代码语言:javascript
复制
:0
* ^Subject:.*Open[ ]*Surge
OpenSurge

procmail的默认设置是忽略大小写。另见D

匹配的消息存储在文件OpenSurge中。它通常位于~/Mail/

编辑

如果您还想匹配"Open sonic",可以使用@Bruce Ediger中的regexp,但是还有其他方法:

添加另一个匹配规则

代码语言:javascript
复制
:0
* ^Subject:.*Open *sonic
OpenSurge

代码语言:javascript
复制
:0
* ^Subject:.*Open *Surge | \
  ^Subject:.*Open *sonic
OpenSurge

代码语言:javascript
复制
:0
* ^Subject:.*(Open *Surge|Open *sonic)
OpenSurge

诸若此类。

您也不应该使用默认的.procmailrc,而应该使用带有注释的 1。

来检查VERBOSE上发生了什么。日志存储在LOGFILE中。

票数 1
EN

Unix & Linux用户

发布于 2014-02-26 01:40:36

我认为你弄错了“打开”和“激增”之间的“零或多个空格”:

代码语言:javascript
复制
* ^Subject:.*(O|o)pen *(S|s)(onic|urge)

我有‘*’(空格星号)之间的‘钢笔’和‘'(S’在regexp,以防万一stackexchange字体难以阅读。

票数 1
EN

Unix & Linux用户

发布于 2020-01-11 07:06:08

所有的正则表达式都是相等的,...but,有些比其他的更平等:-)

Procmail有自己的regex引擎(它不使用库中的regex引擎)和regex风格(它是_almost,与PCRE相同)。Procmail几乎一直都是case INsensitive (您可以使用D标志使它们区分大小写...sorta)。在大多数Procmail regex引擎中都有一些微妙的问题和bug:其中之一是为大小写编写(X\x),其中之一是正则表达式已经是大小写,INsensitive导致regex引擎有点头晕,不能正常工作。{无论如何,编写这样一个正则表达式的最佳/常规方法--假设它区分大小写,但它不在这里--是Xx而不是(X\x)。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/116953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档