On Apr 29, 3:46 pm, Julien <[EMAIL PROTECTED]> wrote: > Hi, > > I'm fairly new in Python and I haven't used the regular expressions > enough to be able to achieve what I want. > I'd like to select terms in a string, so I can then do a search in my > database. > > query = ' " some words" with and "without quotes " ' > p = re.compile(magic_regular_expression) $ <--- the magic happens > m = p.match(query) > > I'd like m.groups() to return: > ('some words', 'with', 'and', 'without quotes') > > Is that achievable with a single regular expression, and if so, what > would it be? > > Any help would be much appreciated. >
With simpleparse: ---------------------------------------------------------- from simpleparse.parser import Parser from simpleparse.common import strings from simpleparse.dispatchprocessor import DispatchProcessor, getString grammar = ''' text := (quoted / unquoted / ws)+ quoted := string unquoted := -ws+ ws := [ \t\r\n]+ ''' class MyProcessor(DispatchProcessor): def __init__(self, groups): self.groups = groups def quoted(self, val, buffer): self.groups.append(' '.join(getString(val, buffer) [1:-1].split())) def unquoted(self, val, buffer): self.groups.append(getString(val, buffer)) def ws(self, val, buffer): pass groups = [] parser = Parser(grammar, 'text') proc = MyProcessor(groups) parser.parse(TESTS[1][1][0], processor=proc) print groups ---------------------------------------------------------- G. -- http://mail.python.org/mailman/listinfo/python-list