got that. Here's the problem though is that '(' and ')' are not included in [\w@ -], so the regex goes into backtrack mode......
([\w@ -\(\)]+[=.]?)*$ seems to solve the particular issue jc is facing..... are we missing any other fancy characters ? On Tuesday, November 13, 2012 8:33:26 PM UTC+1, Jonathan Lundell wrote: > > On 13 Nov 2012, at 11:20 AM, Niphlod <nip...@gmail.com <javascript:>> > wrote: > > I'm definitely not a regex master, but what's the *[=.]?* part required > for ? > > > The idea (not mine, fwiw) is that you can have multiple strings of [\w@ > -]+ separated or ended (but not begun) with a single . or = (but not > multiple ones). My workaround would allow leading or multiple . or =. I > think we probably should anyway, since we should be assuming that args are > necessarily a file path, which seems to be what's going on there. > > It's trying to prevent stuff like foo/../../../bar. > > > On Tuesday, November 13, 2012 7:00:32 PM UTC+1, Jonathan Lundell wrote: >> >> On 13 Nov 2012, at 9:04 AM, Niphlod <nip...@gmail.com> wrote: >> >> seems a problem with the default regex checking for args.... Let's wait >> for Jonathan >> >> >>> import re >> >>> mymatch = re.compile(r'([\w@ -]+[=.]?)*$') >> >>> mymatch.match('a') >> <_sre.SRE_Match object at 0x02A61020> >> >>> mymatch.match('Abbbbbbbb Lccc - Pddddddd GA Deeeeee (ffff ffff >> A).pdf') >> >> endless loop of backtracing regex >> >> >> I don't have a quick fix. The easy solutions involve re elements not >> available in Python re (or at least not until 3.1). >> >> A workaround would be to make the pattern a little more lenient: [\w@ >> -=.]+ >> >> If we really want to exclude successive dots or equals, we could make a >> separate check for that. >> > > > > > --