如何创建仅在主题行开头搜索文本的 Gmail 过滤器?
Posted
技术标签:
【中文标题】如何创建仅在主题行开头搜索文本的 Gmail 过滤器?【英文标题】:How to create Gmail filter searching for text only at start of subject line? 【发布时间】:2012-08-28 02:43:18 【问题描述】:我们会定期收到来自工作中 Jenkins 构建服务器的自动构建消息。
最好将这些内容收集到标签中,跳过收件箱。
使用过滤器当然是正确的选择。
所需的标识符是主题行开头的字符串[RELEASE]
。
尝试指定以下任何正则表达式都会导致带有字符串 release
的电子邮件在任何情况下都匹配到主题行中的任何位置:
\[RELEASE\]*
^\[RELEASE\]
^\[RELEASE\]*
^\[RELEASE\].*
根据我随后阅读的内容,Gmail 没有标准的正则表达式支持,并且从实验看来,与谷歌搜索一样,特殊字符被简单地忽略了。
因此,我正在寻找可以使用的搜索参数,可能类似于 atstart:mystring
与他们的 has:
、in:
符号保持一致。
有没有办法强制匹配只发生在行首,并且只在包含方括号的情况下?
真诚的感谢。
【问题讨论】:
不应该^\[RELEASE\].*
做这个把戏还是我误解了你想做什么?
不管转义,正则表达式格式都不起作用。从我读过的内容来看,gmail 没有标准的正则表达式支持,并且从实验看来,就像谷歌搜索一样,特殊字符被简单地忽略了。我正在寻找一个可以使用的“秘密”标志或类似的东西'可能类似于atstart:mystring
与他们的has:
、in:
符号保持一致。我会将此信息添加到我的帖子中以进行澄清,无论如何,谢谢。
【参考方案1】:
正则表达式不在list of search features 上,它曾经在(或多或少,因为更好的消息搜索功能(即通配符和部分单词搜索))预装feature requests 的列表,所以答案是“您不能通过 Gmail 网络用户界面执行此操作”:-(
目前没有提供此功能的 Labs 功能。 SIEVE 过滤器将是另一种方法,was not supported,Gmail 帮助中似乎不再有任何关于 SIEVE 支持的明确声明。
更新链接腐烂功能请求的预装列表是,呃装箱,原件在 archive.org 上的日期为 2012 年,现在您只需将 redirected 转到一个愚蠢的页面告诉你怎么给反馈。缺乏 SIEVE 支持已在答案 78761 中得到解决Gmail 是否支持所有 IMAP 功能?,自 2015 年的某个时间以来,that answer 默默地重定向到有关 IMAP 客户端配置、存档的答案.org 有一份日期为 2014 年的副本。
使用任何形式的当前搜索工具括号() []
进行分组,如果其中只有一个术语,它们没有明显的效果。使用(aaa|bbb)
和[aaa|bbb]
是等价的,都可以找到单词aaa
或bbb
。大多数其他标点字符,包括\
,被视为空格或单词分隔符,+
-
:
和 "
确实有特殊含义,请参阅 help。
截至 2016 年,为此仅记录了“term1 term2
”表单,相当于搜索“term1 OR term2
”。
您可以通过 Google 文档以编程方式对您的邮箱进行正则表达式搜索(在限制范围内):http://www.labnol.org/internet/advanced-gmail-search/21623/ 有显示如何完成的源代码(复制文档,然后 Tools > Script Editor
以获取完整的源代码)。
您也可以通过 IMAP 执行此操作,如下所述: Python IMAP search for partial subject 并编写脚本以将消息移动到不同的文件夹。 IMAP SEARCH 动词仅支持子字符串,不支持正则表达式(Gmail 搜索进一步限于完整的单词,而不是子字符串),需要进一步处理匹配以应用正则表达式。
为了完整起见,最后一种解决方法是:Gmail 支持加地址,如果您可以将目标地址更改为youraddress+jenkinsrelease@gmail.com
,它仍会发送到您的邮箱,您可以在其中按收件人地址进行过滤。确保使用完整的电子邮件地址to:youraddress+jenkinsrelease@gmail.com
进行过滤。这当然与为此目的设置专用 Gmail 地址或多或少相同:-)
【讨论】:
是否有转义字符来搜索括号或标点符号? @Aron 我不这么认为。尽管某些标点符号是经过特殊处理的(与代码相关,例如c++
),但最好将搜索视为仅处理预索引的单词。
我认为你可以使用双引号 " 来转义括号。我在我的过滤器中使用它,看起来它有效。如果我使用 subject: [term1] (part of term2
我发现所有包含 term1 的消息 和 part of term2 在主题中。但是使用 subject:"[term1] (part of term2"
的形式,我发现所有主题完全以 [term1] 开头的消息(term2 的一部分 【参考方案2】:
我发现这样做的唯一选择是找到一些确切的措辞并将其放在“有的话”选项下。它不是最好的选择,但它确实有效。
【讨论】:
【参考方案3】:我想知道自己如何做到这一点;似乎 Gmail 已经默默地实现了这个功能。我创建了以下过滤器:
Matches: subject:([test])
Do this: Skip Inbox
然后我发了一条带有主题的消息
[test] foo
消息已存档!因此,似乎只需为您希望处理的主题前缀创建一个过滤器。
【讨论】:
请注意,如果您发送主题为“test foo”的消息,您的过滤器也会捕获它。 "[test]" 只真正搜索 "test" =) 这里有一个提示:当你想测试一个想法时,试着想出方法来反驳它。在您的情况下,您编写了一个过滤器来捕获方括号,并且您的测试预计过滤器可以工作。你应该测试它,期待它失败,就像@DanielGill 指出的那样。 :)以上是关于如何创建仅在主题行开头搜索文本的 Gmail 过滤器?的主要内容,如果未能解决你的问题,请参考以下文章
Ember 2,仅在一个计算属性中处理两个或多个属性。如何按搜索文本和类别进行过滤
如何过滤文本文件中以大写字母开头并以正整数结尾的行,并在 linux 的命令行上使用正则表达式?