Tom,
         Thanks very much for that explanation and the link.  That
         explains the %(whatever)s part of the expression, but what
         about the (?:  ...  )     ...is that Python too?  Does it mean
         to interpret whatever is enclosed in this expression as
         "Python" first - rather than as a regular expression?    If so,
         would you happen to know what that operator is called in Python
         ...or better yet would you be able to point me in the direction
         of a Python doc that explains it?  

Thank you very much!

         
On Thu, Nov 24, 2016, at 12:41 PM, Tom Hendrikx wrote:
> Hi,
> 
> That is indeed not regular expression syntax, it is python string
> formatting, used to generate the regex. This string is used also in the
> fail2ban config files in various distros to setup jails (although I
> think that the config file gets less readable from this, especially for
> non-programmers, but none of that is related to your question).
> 
> See
> https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting
> for details on %(...)s syntax.
> 
> Regards,
>       Tom
> 
> On 24-11-16 21:17, pjc...@fastmail.fm wrote:
> > Hello,
> >      I'm new to this list.  I'm familiar with regular expressions but
> > there's one aspect of failregex's that I do not understand - the nesting
> > aspect.  Take, for instance, this example from "apache-badbots.conf"
> > which comes with the installer in the filters.d/ directory:
> > 
> > badbotscustom = EmailCollector|WebEMailExtrac|TrackBack/1\.02|sogou
> > music spider
> > badbots =
> > Atomic_Email_Hunter/4\.0|atSpider/1\.0|autoemailspider|bwh3_user_agent  
> > ...etc...etc...etc...
> > 
> > failregex = ^<HOST>
> > -.*"(GET|POST|HEAD).*HTTP.*"(?:%(badbots)s|%(badbotscustom)s)"$
> > 
> > 
> > The part that I don't understand is this: 
> > "(?:%(badbots)s|%(badbotscustom)s)"
> >    ...If that is a part of standard Posix regular expressions (or perl
> > extensions), I was not aware of it.  So what is it?  I can see that the
> > "%(badbots)" is probably getting replaced by the big long or'ed regular
> > expression above ...but what about the "s" after the last closing
> > parenthesis?  And I do not understand the "(? ... )"  ...what does it
> > mean to have an expression that is entirely enclosed in this
> > parenthesized expression with a question mark after the first opening
> > parenthesis? 
> > 
> > Thanks in advance for any help.
> > 
> > 
> > ------------------------------------------------------------------------------
> > 
> > 
> > 
> > _______________________________________________
> > Fail2ban-users mailing list
> > Fail2ban-users@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/fail2ban-users
> > 
> 
> 
> ------------------------------------------------------------------------------
> _______________________________________________
> Fail2ban-users mailing list
> Fail2ban-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/fail2ban-users
> Email had 1 attachment:
> + signature.asc
>   1k (application/pgp-signature)

------------------------------------------------------------------------------
_______________________________________________
Fail2ban-users mailing list
Fail2ban-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/fail2ban-users

Reply via email to