Comment utiliser une regex dans une compréhension de liste en Python?

Je suis en train de rechercher toutes les positions d'index d'une chaîne dans une liste de mots et je veux les valeurs renvoyées sous forme de liste. Je voudrais trouver la chaîne si elle est sur son propre, ou si elle est précédée ou suivie de la ponctuation, mais pas si c'est une sous-chaîne d'un mot.

Le code suivant ne saisit "vache", et manque à la fois "test;la vache" et "la vache."

myList = ['test;cow', 'one', 'two', 'three', 'cow.', 'cow', 'acow']
myString = 'cow'
indices = [i for i, x in enumerate(myList) if x == myString]
print indices
>> 5

J'ai essayé de changer le code pour utiliser une expression régulière:

import re
myList = ['test;cow', 'one', 'two', 'three', 'cow.', 'cow', 'acow']
myString = 'cow'
indices = [i for i, x in enumerate(myList) if x == re.match('\W*myString\W*', myList)]
print indices

Mais cela donne une erreur: les attentes de la chaîne ou de la mémoire tampon

Si quelqu'un sait ce que je fais mal, je serais très heureux de les entendre. J'ai le sentiment que c'est quelque chose à voir avec le fait que je suis en train d'utiliser une expression régulière dans les il y quand il attend une chaîne de caractères. Est-il une solution?

La sortie, je suis à la recherche devrait se lire:

>> [0, 4, 5]

Grâce

OriginalL'auteur Adam | 2013-02-11