re.search over a list

Steve Holden steve at holdenweb.com
Thu Oct 23 00:13:36 EDT 2008


Pat wrote:
> Bruno Desthuilliers wrote:
>> Pat a écrit :
>>> While I can use a for loop looking for a match on a list, I was
>>> wondering if there was a one-liner way.
>>>
>>> In particular, one of my RE's looks like this '^somestring$' so I
>>> can't just do this: re.search( '^somestring$', str( mylist ) )
>>>
>>> I'm not smart enough (total newbie) to code up a generator expression
>>> and I was wondering if I'm missing something obvious.
>>
>> words = ['foo', 'bar', 'somestring', 'baaz']
>> re.search(r"^somestring$", "\n".join(words), re.MULTILINE)
>>
>>
>>> I love succinct but clearly understandable code.
>>
>> separator.join(sequence_of_strings) is a very common python idiom, so
>> you can consider it as readable.
>>
> 
> That's excellent.  Exactly what I was looking for.
> 
I suspect that

    any(re.match(pat, word) for word in words)

might be a more efficient way to do this.

regards
 Steve
-- 
Steve Holden        +1 571 484 6266   +1 800 494 3119
Holden Web LLC              http://www.holdenweb.com/




More information about the Python-list mailing list