splitting words with brackets
faulkner
faulkner612 at comcast.net
Wed Jul 26 16:14:17 EDT 2006
er,
...|\[[^\]]*\]|...
^_^
faulkner wrote:
> re.findall('\([^\)]*\)|\[[^\]]*|\S+', s)
>
> Qiangning Hong wrote:
> > I've got some strings to split. They are main words, but some words
> > are inside a pair of brackets and should be considered as one unit. I
> > prefer to use re.split, but haven't written a working one after hours
> > of work.
> >
> > Example:
> >
> > "a (b c) d [e f g] h i"
> > should be splitted to
> > ["a", "(b c)", "d", "[e f g]", "h", "i"]
> >
> > As speed is a factor to consider, it's best if there is a single line
> > regular expression can handle this. I tried this but failed:
> > re.split(r"(?![\(\[].*?)\s+(?!.*?[\)\]])", s). It work for "(a b) c"
> > but not work "a (b c)" :(
> >
> > Any hint?
More information about the Python-list
mailing list