MRAB wrote: > Márcio Faustino wrote: > > On 11 Abr, 20:06, Peter Otten <__pete...@web.de> wrote: > >> I think you are right. Please file a bug report . > > > > I will. > > > >> IMO this doesn't fix the problem because > >> > >> (1) it allows "%%%" which is also incorrect > > > > You're right, how about this one "(?<!%)%(?:%%)*(?!%)"? > > > Instead of checking for a 'bad' value, why not check for a 'good' one? > > Change: > > _badpercent_re = re.compile(r"%[^%]|%$") > > to: > > _goodpercent_re = re.compile(r"(?:%%|[^%])*$") > > and then: > > m = self._badpercent_re.search(tmp_value) > if m: > > to: > > m = self._goodpercent_re.match(tmp_value) > if not m:
Configparser also knows a construct "%(whatever)s" which works like Python's string formatting and takes "whatever" from the "DEFAULT" section of the config file. I like your approach, but I think the regex should be _goodpercent_re = re.compile(r"^(?:%%|%\([^)]+\)s|[^%])*$" or similar -- what is currently allowed within the parens seems to be an implementation accident... Peter -- http://mail.python.org/mailman/listinfo/python-list