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-bounces at 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-bounces at 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