Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #64358 > unrolled thread

Re: regex multiple patterns in order

Started bykm <srikrishnamohan@gmail.com>
First post2014-01-20 16:57 +0530
Last post2014-01-20 16:57 +0530
Articles 1 — 1 participant

Back to article view | Back to comp.lang.python

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: regex multiple patterns in order km <srikrishnamohan@gmail.com> - 2014-01-20 16:57 +0530

#64358 — Re: regex multiple patterns in order

Fromkm <srikrishnamohan@gmail.com>
Date2014-01-20 16:57 +0530
SubjectRe: regex multiple patterns in order
Message-ID<mailman.5749.1390217302.18130.python-list@python.org>

[Multipart message — attachments visible in raw view] — view raw

Aah! I understand now.
Thank you

Regards,
Krishna Mohan



On Mon, Jan 20, 2014 at 4:48 PM, Ben Finney <ben+python@benfinney.id.au>wrote:

> km <srikrishnamohan@gmail.com> writes:
>
> > I am trying to find sub sequence patterns but constrained by the order
> > in which they occur
>
> There are also specific resources for understanding and testing regex
> patterns, such as <URL:http://www.pythonregex.com/>.
>
> > For example
> >
> > >>> p = re.compile('(CAA)+?(TCT)+?(TA)+?')
> > >>> p.findall('CAACAACAATCTTCTTCTTCTTATATA')
> > [('CAA', 'TCT', 'TA')]
> >
> > But I instead find only one instance of the CAA/TCT/TA in that order.
>
> Yes, because the grouping operator (the parens ‘()’) in each case
> contains exactly “CAA”, “TCT”, “TA”. If you want the repetitions to be
> part of the group, you need the repetition operator (in your case, ‘+’)
> to be part of the group.
>
> > How can I get 3 matches of CAA, followed by  four matches of TCT followed
> > by 2 matches of TA ?
>
> With a little experimenting I get:
>
>     >>> p = re.compile('((?:CAA)+)?((?:TCT)+)?((?:TA)+)?')
>     >>> p.findall('CAACAACAATCTTCTTCTTCTTATATA')
>     [('CAACAACAA', 'TCTTCTTCTTCT', 'TATATA'), ('', '', '')]
>
> Remember that you'll get no more than one group returned for each group
> you specify in the pattern.
>
> > Well these patterns (CAA/TCT/TA) can occur any number of times and
> > atleast once so I have to use + in the regex.
>
> Be aware that regex is not the solution to all parsing problems; for
> many parsing problems it is an attractive but inappropriate tool. You
> may need to construct a more specific parser for your needs. Even if
> it's possible with regex, the resulting pattern may be so complex that
> it's better to write it out more explicitly.
>
> --
>  \     “To punish me for my contempt of authority, Fate has made me an |
>   `\                   authority myself.” —Albert Einstein, 1930-09-18 |
> _o__)                                                                  |
> Ben Finney
>
> --
> https://mail.python.org/mailman/listinfo/python-list
>

[toc] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web