info-gnus-english
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Using `all.SCORE' @ ~/News/all.SCORE [regex syntax]


From: Ben Bacarisse
Subject: Re: Using `all.SCORE' @ ~/News/all.SCORE [regex syntax]
Date: Mon, 29 May 2017 11:34:07 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

Harry Putnam <reader@newsguy.com> writes:

> all.SCORE:
>
> ((mark -100)
>  ("from"
>   ("nikolys@gmail" -101 nil r)
>   ("sina\.com" -101 nil r)
>   ("@aol\\.com" -101 nil r)
>   ("@[0-9]+\\.com>" -101 nil r)
>   ("harry504@gmail" -101 nil r)
>   ("s[ea]l[el]\\|discount\\|free\\|wholesale\\|paypal" -101 nil r))
>  ("subject"
>   ("~~" -101 nil r)
>   ("~~\\|>>>\\|\\[A-Z\\]\\{4\\}" -101 nil r)
>   ("!!\\|free\\|discount\\|wholesale" -101 nil r)))
<snip>
> I want the `free' at the last `from' element to be more restrictive as
> it is hitting quite a few false positives due to network name with
> various combinations of free with a dot like: `free.', `.free' and
> `.free.'
>
> This is happening in groups with thousands and thousands of messages
> so I don't want to get it wrong... not sure how to re-run it.
>
> So something like (please ignore the elisions (`[...]')):
>
>         [...] |[^\.]free[^\.]\\|[...]

It's simpler than you think because . does not need \ inside []s.  All
you need to add is [^.] on either side.

> But does it need the double slashes like:
>
>         [...] |\\[^\.\\]free\\[^\.\\] [...]
>                       ^^    ^^     ^^      
> Will that even accomplish what I am after; to allow `free' in any
> combination of: `.free', `free.' or `.free.' to not be down scored?

You've added \s only where not needed!  There are two things going on
that require \s.  First, some elements i a regexp only mean what you
want when preceded by \.  So | is just | unless you write \| to mean an
alternative.  But then the regexp is being put into a string, and \s
need to be doubled inside a string so that they remain \s.  So, if you
did need [^\.] (you don't) you'd have to write "... [^\\.] ..." in a
string.

> Is there a handy way to test the regex?

I use highlight mode.  Text matching your regexp gets highlighted in
real time.  Remember, get the regexp working, then double every \ to put
it into a string.

> Is there a handy way to rerun all those messages thru `all.SCORE'?

I think just exiting and re-entering the group does that, though I'm
sure there will be some more direct way.

-- 
Ben.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]