I'm trying to make a regex to match common mailing list addresses and file messages to corresponding folders.

I'm using sieve-test to try and understand what is happening. The sieve script 
is:

require [ "fileinto", "regex", "variables" ];
if header :regex ["Sender"]
  ["(.*>[ \\t]*,?[ \\t]*)?([...@]*)-([...@]*)(-bounces)?...@antlr.org"] {

  fileinto "${0} :: 1:${1} 2:${2} 3:${3} 4:${4} 5:${5} 6:${6} 7:${7}";
}

The email contains:

Sender: antlr-interest-boun...@antlr.org

I'm trying to form a folder from the first two parts of the sender. In the real script, that will do a "fileto antlr.interest;"

Running sieve-test, I get:

* store message in folder: antlr-interest-boun...@antlr.org :: 1: 2:antlr 3: 4:interest 5: 6:-bounces 7:

I don't understand why parts 3 and 5 are empty. From the regex grouping, I 
expected

Part 2 "antlr"
Part 3 "interest"
Part 4 "-bounces"

The regex groups break done as:
1: (.*>[ \\t]*,?[ \\t]*)?    - match leading name, comma or spaces
2: ([...@]*)                  - match first part: 'antlr' in his case
-                            - Hyphen between parts
3: ([...@]*)                  - match second part: interest in this case
4: (-bounces)?               - When cc'd, -bounces part isn't used

The same regex tested with perl works as I expected.

Without the first group of the regex '(.*>[ \\t]*,?[ \\t]*)?', it works correctly. That group isn't getting matched anyway, so it shouldn't matter.

This is with 1.2alpha5.

What am I missing?

Thanks,

        Andy

Reply via email to