CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Python] Question RegExp

MrGreez94
MrGreez94
Niveau 10
20 avril 2016 à 19:19:34

Bonsoir,

Cela fait maintenant plusieurs heures que je bloque sur un RegExp Python à la con. :fou:
j'ai des noms d'archives du genre

que_des_lettres_15.4STD0-A_bin.tar.Z

Et j'aimerais récupérer le

15.4STD0-A

Cette expression est délimitée nécessairement par des underscores, elle commence nécessairement par un chiffre et ne contient que des caractères majuscules, des nombres, des points ou des tirets.

J'ai tenté des trucs du genre:

re.match('(?<=\_)(\d[0-9A-Z-.]?)(?=\_)', ma_string)

Mais sans succès :-(

Quelqu'un aurait une idée de la bonne RegExp ? :ange:

Candystand
Candystand
Niveau 10
20 avril 2016 à 20:05:01

Essaye donc ça

([0-9]+\.[0-9a-zA-Z]+-[0-9a-zA-Z])

Je suis pas un pro des regex donc ça peut être faux

Message édité le 20 avril 2016 à 20:06:23 par Candystand
Chocolayte
Chocolayte
Niveau 73
20 avril 2016 à 20:05:19

https://regex101.com/r/nU4kD6/1 ?
Je sais pas si elle est faible en terme de vérifications, mais elle fonctionne pour l'exemple

MrGreez94
MrGreez94
Niveau 10
20 avril 2016 à 20:08:09

Merci pour vos réponses !

Le 20 avril 2016 à 20:05:19 Chocolayte a écrit :
https://regex101.com/r/nU4kD6/1 ?
Je sais pas si elle est faible en terme de vérifications, mais elle fonctionne pour l'exemple

Bordel je connaissais pas ce genre de sites, tu m'a fais ma journée là :ouch:

Chocolayte
Chocolayte
Niveau 73
20 avril 2016 à 20:09:37

C'est plus simple que de compiler et d'exécuter à chaque fois [[sticker:p/1kku]]
Après je ne sais pas si elles sont toujours universelles selon le langage (j'imagine que c'est normalisé mais je m'y connais très peu en regex)

MrGreez94
MrGreez94
Niveau 10
20 avril 2016 à 20:24:56

Le 20 avril 2016 à 20:09:37 Chocolayte a écrit :
C'est plus simple que de compiler et d'exécuter à chaque fois [[sticker:p/1kku]]
Après je ne sais pas si elles sont toujours universelles selon le langage (j'imagine que c'est normalisé mais je m'y connais très peu en regex)

Moi non plus je m'y connais pas spécialement. J'en ai besoin mais qu'est ce que j'ai la flemme de me former :rire:

RogerLeCaillou
RogerLeCaillou
Niveau 10
20 avril 2016 à 20:32:38

Le 20 avril 2016 à 20:24:56 MrGreez94 a écrit :
Moi non plus je m'y connais pas spécialement. J'en ai besoin mais qu'est ce que j'ai la flemme de me former :rire:

Tu devrais, c'est le genre de trucs qui sert tellement souvent que c'est un gain de temps considérable de BIEN se former aux regex

MrGreez94
MrGreez94
Niveau 10
20 avril 2016 à 22:16:53

Le 20 avril 2016 à 20:32:38 RogerLeCaillou a écrit :

Le 20 avril 2016 à 20:24:56 MrGreez94 a écrit :
Moi non plus je m'y connais pas spécialement. J'en ai besoin mais qu'est ce que j'ai la flemme de me former :rire:

Tu devrais, c'est le genre de trucs qui sert tellement souvent que c'est un gain de temps considérable de BIEN se former aux regex

Si tu le dis, je ferai ça pendant mes heures de stage alors :hap:

MrGreez94
MrGreez94
Niveau 10
22 avril 2016 à 14:43:55

Je up ce topic pour pas en refaire un autre mais vous connaissez un méthode avec les expressions régulières (ou autre d'ailleurs) pour tester si le fichier a une extension valide ou non ?

je suis dans le cas où un fichier contient un point mais n'a pas d'extension alors qu'il devrait (une archive) et j'arrive pas à le pointer comme fichier corrompu

[[sticker:p/1lmk]]
MrGreez94
MrGreez94
Niveau 10
22 avril 2016 à 14:50:28

Désolé double post

(.*\.[a-z+A-Z+\.]+)

J'ai ça qui me permet de voir s'il a une extension (pas hyper solide mais je crois pas qu'il y ait d'extensions uniquement fait de chiffres. Mais j'arrive pas à déterminer si l'extension existe ou non

Genre

fichier.trololol

Passe au travers

Bunyan
Bunyan
Niveau 17
22 avril 2016 à 15:41:10

Qu'est-ce qu'une "extension valide" ? Parce qu'en soit, une extension, c'est purement informatif et alphanumérique. Tu as une table contre laquelle projeter ton extension pour vérifier sa validité ?

Pour moi, le plus simple est de couper la chaîne au dernier point, et prendre tout ce qui suit. Ici, les regex ne me semblent pas indiquées.

MrGreez94
MrGreez94
Niveau 10
22 avril 2016 à 16:05:43

En fait je peux pas trop deviner à quelles extensions mon soft va être confronté. J'aimerai éviter de déclarer une table en brut avec plein d'extensions dedans.
S'il y a pas d'autres solutions tant pis, mon programme fait juste des trucs pour rien, il va plus loin dans le process pour se rendre compte juste après qu'il arrive pas à aller plus loin, c'est pas un drame, ça fait pas planter mon programme :hap:

MrGreez94
MrGreez94
Niveau 10
26 avril 2016 à 14:12:07

Encore une fois je réutilise ce topic pour pas en refaire d'autres. Il y a un truc que je pige pas avec les RegExp en python. Je test mon expression régulière sur regex101, elle marche mais dès que je passe en python elle ne marche plus.

Exemple :
https://regex101.com/r/oV9jM2/1

et dès que je passe en python:

import re
print(re.match(r'(\d+\.\d+STD\d+)', file.read())) 
#le fichier contient la même chose que dans le lien regex101
None

Et je comprends pas du tout à quoi c'est du :(

MrGreez94
MrGreez94
Niveau 10
26 avril 2016 à 14:23:12

Désolé double post, j'ai laissé match mais il faut évidemment ici utiliser re.search(). Ça marche ne marche pas mieux ceci étant dit

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment