[clug] Help with a python regexp?
Francis Whittle
fj.whittle at gmail.com
Sun Feb 22 15:24:36 GMT 2009
Or, of course, I could be entirely wrong.
(?<!exchange.idl) is likely your winner :)
On Sun, 2009-02-22 at 08:51 +1100, Francis Whittle wrote:
> The way I'd do it in Perl would be to match a parenthesised exchange.idl
> at the beginning of the line and discard if the parenthesis match, well,
> matched.
>
> if(m/^(exchange.idl)?.*warning[: ].*/ && $1 eq ''){
> #do stuff
> }
>
> You'd then be able to just add in exclusions to the paren match....
> Now I've done barely any python ever but if it does regular expressions
> in a Perl or POSIX way (doesn't it do the later?) it should be much
> similar.
>
> If you want to stick to only the regexp, you'd need some way of matching
> _not_ the first bit. This is tricky as exclusions are defined one
> character at a time.
>
> On Fri, 2009-02-20 at 21:08 +1100, Brad Hards wrote:
> > Hi,
> >
> > I've been playing with buildbot (http://buildbot.net:80/trac), and I've run
> > into a problem.
> >
> > A bit of background first. One of the thing that happens with the compile step
> > is that it extracts the warnings messages from the rest of stdout.
> > So given this:
> > http://colo1.frogmouth.net:8010/builders/full-centos52/builds/109/steps/compile/logs/stdio
> > it pulls out:
> > http://colo1.frogmouth.net:8010/builders/full-centos52/builds/109/steps/compile/logs/warnings
> >
> > The method to do that looks like this:
> >
> > def createSummary(self, log):
> > self.warnCount = 0
> >
> > if not self.warningPattern:
> > return
> >
> > wre = self.warningPattern
> > if isinstance(wre, str):
> > wre = re.compile(wre)
> >
> > # Check if each line in the output from this command matched our
> > # warnings regular expressions. If did, bump the warnings count and
> > # add the line to the collection of lines with warnings
> > warnings = []
> > for line in log.getText().split("\n"):
> > if wre.match(line):
> > warnings.append(line)
> > self.warnCount += 1
> >
> > The warningPattern is (by default) is
> > warningPattern = '.*warning[: ].*'
> >
> > The problem is that I can't fix some of the warnings. Basically, all those
> > lines that start with "exchange.idl" are hiding the real compile warnings.
> >
> > I don't want to hide the lines in a normal build (e.g. by piping
> > to /dev/null), only filtering on the buildbot. Hacking the method is a
> > possibility, but I'd prefer to just have a better regexp.
> >
> > So how to I match a line containing "warning:", as long as it doesn't start
> > with "exchange.idl"?
> >
> > All help much appreciated
> >
> > Brad
>
More information about the linux
mailing list