En utilisant re
en Python, je voudrais renvoyer tous les caractères dans une chaîne qui précède la première apparition d'un trait de soulignement. En outre, je voudrais que la chaîne qui est retournée soit en majuscule et sans caractères non alphanumériques.Renvoyer tous les caractères avant le premier caractère de soulignement
Par exemple:
AG.av08_binloop_v6 = AGAV08
TL.av1_binloopv2 = TLAV1
Je suis assez sûr que je sais comment retourner une chaîne en majuscules à l'aide string.upper()
mais je suis sûr qu'il ya plusieurs façons d'éliminer le .
efficacement. Toute aide serait grandement appréciée. J'apprends encore des expressions régulières lentement mais sûrement. Chaque conseil est ajouté à mes notes pour une utilisation future.
Pour plus de clarté, mes exemples ci-dessus ne sont pas les chaînes réelles. La chaîne réelle ressemblerait à ceci:
AG.av08_binloop_v6
Avec ma sortie désirée ressembler à:
AGAV08
Et l'exemple suivant serait le même. Chaîne:
TL.av1_binloopv2
sortie souhaitée:
TLAV1
Encore une fois, merci à tous pour l'aide!
+1 "sur spec", regarde bien mais je ne suis pas un gourou regex. Edit: Je remplacerai 're.search' par' re.match' et laisser tomber le '^' initial dans le motif ('match' commence toujours au début de la chaîne et est optimisé pour cela). – delnan
Bien que j'aime la simplicité des autres réponses, je voulais aussi que toute solution que je suis allé avec soit utile pour l'exploration de l'expression régulière. Celui-ci correspond à la facture. Merci Gumbo! – durandal
Juste pour la connaissance future, comment cela serait-il fait avec '' re.compile''? J'aime la nature d'un one-liner de ceci, mais il serait bon de savoir pour la connaissance future. – durandal