a simple regex question

John Salerno johnjsal at NOSPAMgmail.com
Fri Mar 31 22:55:28 EST 2006


Justin Azoff wrote:
> John Salerno wrote:
>> Ok, I'm stuck on another Python challenge question. Apparently what you
>> have to do is search through a huge group of characters and find a
>> single lowercase character that has exactly three uppercase characters
>> on either side of it. Here's what I have so far:
>>
>> pattern = '([a-z][A-Z]{3}[a-z][A-Z]{3}[a-z])+'
>> print re.search(pattern, mess).groups()
>>
>> Not sure if 'groups' is necessary or not.
>>
>> Anyway, this returns one matching string, but when I put this letter in
>> as the solution to the problem, I get a message saying "yes, but there
>> are more", so assuming this means that there is more than one character
>> with three caps on either side, is my RE written correctly to find them
>> all? I didn't have the parentheses or + sign at first, but I added them
>> to find all the possible matches, but still only one comes up.
>>
>> Thanks.
> 
> I don't believe you _need_ the parenthesis or the + in that usage...
> 
> Have a look at http://docs.python.org/lib/node115.html
> 
> It should be obvious which method you need to use to "find them all"
> 

But would findall return this match: aMNHiRFLoDLFb  ??

There are actually two matches there, but they overlap. So how would 
your write an RE that catches them both?



More information about the Python-list mailing list