如何用正则表达式匹配中文字符?

我用mutt+procmail+getmail6收取邮件,邮箱有两个子邮箱:INBOX和垃圾邮件。我想收取这两个子邮箱的邮件,另外在procmail加一条规则,将垃圾邮件加上SPAM的X-Label区分。碰到问题是:getmail收取邮件时,加上X-getmail-retrieved-from-mailbox标明收取的子邮箱名字。问题是垃圾邮件这几个字是中文,在procmailrc里写正则表达式没法直接辨认:

:0 Afhw

* ^X-getmail-retrieved-from-mailbox: 垃圾
| formail -I X-Label: SPAM

试过用[\u5783]表示中文,也不行。但是直接写

  • ^X-getmail-retrieved-from-mailbox: INBOX
    是可以正常辨认的。如何在这种正则表达式中表示中文字符?谢谢。

电子邮件的头里的值是经过编码的。可以用我的 getmailheader 脚本来解码,然后这样用:

SUBJECT = `getmailheader Subject`
LOG = ">Subject: $SUBJECT
"

后边那个是打日志用的。你可以把「Subject」改成别的头名。

多谢多谢,我网上找了一个管道命令也有类似功能:

MBOX=`formail -x X-getmail-retrieved-from-mailbox: | tr -d '\n' | sed -e 's/^ //' | /usr/bin/perl -MEncode -ne 'print encode ("utf8",decode ("MIME-Header",$_ )) '`

问题是我怎么在procmailrc里把这个邮箱名和"垃圾邮件"字符串对照,相同则运行指定命令?谢谢哈

* MBOX ?? 垃圾邮件

多谢多谢,搞定了