Pourquoi pas :
import re
s = "alpha.Customer[cus_Y4o9qMEZAugtnW] ..."
m = re.search(r"\[([A-Za-z0-9_]+)\]", s)
print m.group(1)
Pour moi, cette empreinte :
cus_Y4o9qMEZAugtnW
Notez que l'appel à re.search(...)
trouve la première correspondance avec l'expression régulière, de sorte qu'il ne trouve pas l'adresse de l'utilisateur. [card]
à moins que vous ne répétiez la recherche une seconde fois.
Edit : Le site expression régulière voici un python littéral de chaîne de caractères brut ce qui signifie que les barres obliques inversées ne sont pas traitées comme des caractères spéciaux et qu'elles sont transmises à la fonction re.search()
inchangé. Le site pièces de l'expression régulière sont :
-
\[
correspond à un littéral [
caractère
-
(
commence un nouveau groupe
-
[A-Za-z0-9_]
est un jeu de caractères correspondant à n'importe quelle lettre (majuscule ou minuscule), chiffre ou trait de soulignement
-
+
correspond à l'élément précédent (le jeu de caractères) une ou plusieurs fois.
-
)
termine le groupe
-
\]
correspond à un littéral ]
caractère
Edit : Comme D K l'a fait remarquer, l'expression régulière pourrait être simplifiée à :
m = re.search(r"\[(\w+)\]", s)
depuis le \w
est une séquence spéciale qui signifie la même chose que [a-zA-Z0-9_]
en fonction de la re.LOCALE
y re.UNICODE
paramètres.