J'ai un tableau de chaînes comme ceci:
/content/drive/My Drive/Videos/video1.avi /content/drive/My Drive/Videos/video2.avi /content/drive/My Drive/Videos/video3.avi
4 Réponses :
Je ne pense pas que vous avez vraiment besoin de regex ici. Vous pouvez faire, mais si vous voulez vraiment regex, p>
Notez que les noms de fichiers peuvent contenir des caractères autres que des lettres, des chiffres, des traits de soulignement et des tirets.
Si vous recherchez toujours une regex.
Utilisation de REGEX:
['video1', 'video2', 'video3']
Notez que les noms de fichiers peuvent contenir des caractères autres que des lettres, des chiffres et des soulignements.
Merci d'avoir fait remarquer cela. @Ahmedabdelhamed J'ai modifié ma réponse maintenant, basée sur la regex que vous avez suggéré dans les commentaires. Merci encore.
Merci! ça marche parfaitement :)
Ce n'est peut-être pas la meilleure réponse, mais il est très facile de comprendre. Une fois que vous avez appris cela, vous pouvez essayer de voir comment les autres solutions fonctionnent.
import re
lst = ['/content/drive/My Drive/Videos/video1.avi',
'/content/drive/My Drive/Videos/video2.avi',
'/content/drive/My Drive/Videos/video3.avi']
new_lst = []
for line in lst:
s = re.search('My Drive/Videos/(.*?).avi', line).group(1)
new_lst.append(s)
print(new_lst)
Devez-vous utiliser Regex? On dirait que vous pouviez le faire assez facilement avec
sous-chaîne code> etindexof code> (ou mêmedivisé code>) et n'apporte pas de regex dans le tout.[^ /] + (? = \ \. AVI $) code>? Démo: Regex101.com/r/sazvbc/1