Mail-SpamAssassin
view release on metacpan or search on metacpan
t/re_base_extraction.t view on Meta::CPAN
body FOO /(?:(?:bbbb)|dddd (?:eeee )?by|aaaa)/i
', {
base_extract => 1,
bases_must_be_casei => 1,
bases_can_use_alternations => 0,
bases_can_use_quantifiers => 0,
bases_can_use_char_classes => 0,
bases_split_out_alternations => 1
}, [
'bbbb:FOO,[l=0]',
'dddd by:FOO,[l=0]',
'dddd eeee by:FOO,[l=0]',
'aaaa:FOO,[l=0]'
], [ ]);
# ---------------------------------------------------------------------------
1 and try_extraction ('
body TEST5 /time to refinance|refinanc\w{1,3}\b.{0,16}\bnow\b/i
', {
base_extract => 1,
bases_must_be_casei => 1,
bases_can_use_alternations => 0,
bases_can_use_quantifiers => 0,
bases_can_use_char_classes => 0,
bases_split_out_alternations => 1
}, [
'refinanc:TEST5,[l=1]',
], [ ]);
# ---------------------------------------------------------------------------
1 and try_extraction ('
body TEST2 /foody* bar/
body TEST3 /foody? bar/
', {
base_extract => 1,
bases_must_be_casei => 1,
bases_can_use_alternations => 0,
bases_can_use_quantifiers => 0,
bases_can_use_char_classes => 0,
bases_split_out_alternations => 1
}, [
'food:TEST2,[l=1]',
'food bar:TEST2,[l=1] TEST3,[l=1]',
'foody bar:TEST2,[l=1] TEST3,[l=1]',
], [ ]);
# ---------------------------------------------------------------------------
1 and try_extraction ('
body __SARE_FRAUD_BADTHINGS /(?:all funds will be returned|ass?ylum|assassinate|(?:auto|boat|car|plane|train).{1,7}(?:crash|accident|disaster|wreck)|before they both died|brutal acts|cancer|coup attempt|disease|due to the current|\bexile\b|\bfled|\...
body __FRAUD_PTS /\b(?:ass?ass?inat(?:ed|ion)|murder(?:e?d)?|kill(?:ed|ing)\b[^.]{0,99}\b(?:war veterans|rebels?))\b/i
', {
base_extract => 1,
bases_must_be_casei => 1,
bases_can_use_alternations => 0,
bases_can_use_quantifiers => 0,
bases_can_use_char_classes => 0,
bases_split_out_alternations => 1
}, [
'accident:__SARE_FRAUD_BADTHINGS,[l=1]',
'all funds will be returned:__SARE_FRAUD_BADTHINGS,[l=1]',
'asasinated:__FRAUD_PTS,[l=1]',
'asasination:__FRAUD_PTS,[l=1]',
'asassinated:__FRAUD_PTS,[l=1]',
'asassination:__FRAUD_PTS,[l=1]',
'assasinated:__FRAUD_PTS,[l=1]',
'assasination:__FRAUD_PTS,[l=1]',
'assassinate:__SARE_FRAUD_BADTHINGS,[l=1]',
'assassinated:__FRAUD_PTS,[l=1] __SARE_FRAUD_BADTHINGS,[l=1]',
'assassination:__FRAUD_PTS,[l=1]',
'assylum:__SARE_FRAUD_BADTHINGS,[l=1]',
'asylum:__SARE_FRAUD_BADTHINGS,[l=1]',
'before they both died:__SARE_FRAUD_BADTHINGS,[l=1]',
'brutal acts:__SARE_FRAUD_BADTHINGS,[l=1]',
'cancer:__SARE_FRAUD_BADTHINGS,[l=1]',
'coup attempt:__SARE_FRAUD_BADTHINGS,[l=1]',
'crash:__SARE_FRAUD_BADTHINGS,[l=1]',
'disaster:__SARE_FRAUD_BADTHINGS,[l=1]',
'disease:__SARE_FRAUD_BADTHINGS,[l=1]',
'due to the current:__SARE_FRAUD_BADTHINGS,[l=1]',
'exile:__SARE_FRAUD_BADTHINGS,[l=1]',
'fled:__SARE_FRAUD_BADTHINGS,[l=1]',
'flee:__SARE_FRAUD_BADTHINGS,[l=1]',
'have been frozen:__SARE_FRAUD_BADTHINGS,[l=1]',
'impeach:__SARE_FRAUD_BADTHINGS,[l=1]',
'killed:__FRAUD_PTS,[l=1] __SARE_FRAUD_BADTHINGS,[l=1]',
'killing:__FRAUD_PTS,[l=1]',
'land dispute:__SARE_FRAUD_BADTHINGS,[l=1]',
'murder:__FRAUD_PTS,[l=1] __SARE_FRAUD_BADTHINGS,[l=1]',
'over-invoice:__SARE_FRAUD_BADTHINGS,[l=1]',
'plane:__SARE_FRAUD_BADTHINGS,[l=1]',
'poisoned by:__SARE_FRAUD_BADTHINGS,[l=1]',
'poisoned to death by:__SARE_FRAUD_BADTHINGS,[l=1]',
'political crisis:__SARE_FRAUD_BADTHINGS,[l=1]',
'relocate:__SARE_FRAUD_BADTHINGS,[l=1]',
'since the demise:__SARE_FRAUD_BADTHINGS,[l=1]',
'slay:__SARE_FRAUD_BADTHINGS,[l=1]',
'train:__SARE_FRAUD_BADTHINGS,[l=1]',
'war veterans:__FRAUD_PTS,[l=1]',
'wreck:__SARE_FRAUD_BADTHINGS,[l=1]',
], [ ]);
# ---------------------------------------------------------------------------
# skip this one for perl 5.6.*; it does not truncate the long strings in the
# same place as 5.8.* and 5.9.*, although they still work fine
try_extraction ('
body VIRUS_WARNING345 /(This message contained attachments that have been blocked by Guinevere|This is an automatic message from the Guinevere Internet Antivirus Scanner)\./
body VIRUS_WARNING345I /(This message contained attachments that have been blocked by Guinevere|This is an automatic message from the Guinevere Internet Antivirus Scanner)\./i
', {
base_extract => 1,
bases_must_be_casei => 1,
bases_can_use_alternations => 0,
bases_can_use_quantifiers => 0,
bases_can_use_char_classes => 0,
bases_split_out_alternations => 1
}, [
'this is an automatic message from the guinevere internet ant:VIRUS_WARNING345,[l=1] VIRUS_WARNING345I,[l=0]',
'this message contained attachments that have been blocked by:VIRUS_WARNING345,[l=1] VIRUS_WARNING345I,[l=0]'
], [ ]);
# ---------------------------------------------------------------------------
try_extraction ('
body FOO /foobar\x{e2}\x{82}\x{ac}baz/
', {
base_extract => 1,
bases_must_be_casei => 0,
bases_can_use_alternations => 0,
bases_can_use_quantifiers => 0,
bases_can_use_char_classes => 0,
bases_split_out_alternations => 1
}, [
'foobar:FOO,[l=0]',
], [ ]);
# ---------------------------------------------------------------------------
try_extraction ('
body FOO /(?:Viagra|Valium|Xanax|Soma|Cialis){2}/i
', {
base_extract => 1,
bases_must_be_casei => 1,
bases_can_use_alternations => 0,
bases_can_use_quantifiers => 0,
( run in 0.773 second using v1.01-cache-2.11-cpan-5511b514fd6 )