[EMAIL PROTECTED] wrote: > OK, I tried this one. I am actually trying to parse dhcpd.conf file. > > def get_filename(self): > p = "^[ \t]*filename[ \t]+(\S+).*?host[ \t]+%s\s*$" % self.host > pat = re.compile(p, re.MULTILINE | re.DOTALL) > mo = pat.search(self.confdata) > if mo: > return mo.group(1) > else: > return "" > > self.host is the hostname and self.confdata is the string. It actually > matches the first filename that appears before the host entry. I want > the last one that appears before the host entry. I tried '.*?' assuming > it works, but now I know why it doesn't work! > > Since I am only interested in a particular host's filename, I could > easily parse line by line. That is how it is done now, but would like to > know if there any RE that does the trick! >
Instead of .*? try (?:.(?!filename))*? Now forget about it and go back to the presumably legible code that you have already :-) Cheers, John -- http://mail.python.org/mailman/listinfo/python-list