<div dir="ltr">fair guess, but . isn't special in that context.  what i was missing was s*s*g was matching right through syslog.2.g so !(*.*) couldn't eliminate dots it couldn't see.  no way to specify shortest match for s*s*g afaik.  anyway a better pattern is *(messages|syslog)<br>

<div><div class="gmail_extra"><br><br><div class="gmail_quote">On 10 May 2014 13:17, Daniel Taylor <span dir="ltr"><<a href="mailto:random@argle.org" target="_blank">random@argle.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    <div>(*\.*)<div><div class="h5"><br><br>
      On 05/10/2014 08:12 AM, gregrwm wrote:<br>
    </div></div></div>
    <blockquote type="cite"><div><div class="h5">
      <div dir="ltr">
        <div>
          <div>ok you bashers, check me on this:<br>
            <br>
            matches wanted:  messages syslog<br>
            matches not wanted:  anaconda.syslog messages.1 syslog.1
            syslog.2.gz<br>
            pattern1:  !(*.)s*s*g!(*.*)<br>
          </div>
          pattern1 match results:  messages syslog syslog.2.gz
          syslog.3.gz syslog.4.gz<br>
        </div>
        pattern2:  !(*.)s*s*g!(*1|*z)<br>
        <div>pattern2 match results:  messages syslog<br>
          <br>
          so pattern2 works.  but is that pattern1 result a bug?<br></div></div></div></div></blockquote></div></blockquote></div></div></div></div>