8
votes

Python: correspondance de la liste et des chaînes

J'ai suivi:

temp = "aaaab123xyz@+"

lists = ["abc", "123.35", "xyz", "AND+"]

for list in lists
  if re.match(list, temp, re.I):
    print "The %s is within %s." % (list,temp)


0 commentaires

3 Réponses :


14
votes

Vous pouvez utiliser re.search au lieu de re.match .

Cela semble aussi que vous n'avez pas vraiment besoin d'expressions régulières ici. Votre expression régulière 123.35 ne fait probablement pas ce que vous attendez parce que le point correspond à rien.

Si tel est le cas, vous pouvez faire un confinement de chaîne simple à l'aide de x dans S .


1 commentaires

Ouais, le vôtre est 5 secondes plus vite, +1



12
votes

Utilisez re.search ou Il suffit d'utiliser dans si l in temp:

Note : Type intégré Liste ne doit pas être ombragé, donc pour l dans les listes: est meilleur


1 commentaires

Je devrais accepter une simple correspondance de substration dans est beaucoup plus facile que RE.Search.



0
votes

Vous pouvez le faire avec une vérification légèrement complexe à l'aide de mappe code> et tout code>.

>>> temp = "aaaab123xyz@+"
>>> lists = ["abc", "123.35", "xyz", "AND+"]
>>> any(map(lambda match: match in temp, lists))
True
>>> temp = 'fhgwghads'
>>> any(map(lambda match: match in temp, lists))
False


0 commentaires