IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Expression régulière Regex


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Par défaut Expression régulière Regex
    Re - bonjour,

    En partant de cette chaine "La.lectrice.1988.VOSTA.tvrip.XviD.avi" je souhaiterai récupérer juste la partie La lectrice .
    Pour ce faire j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "La.lectrice.1988.VOSTA.tvrip.XviD.avi" | sed -e '(\S+)\d{4}'
    Et bien sur ca marche. Heu Non en fait j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed: -e expression #1, char 1: unknown command: `('
    Je pense que le regex est correct, c'est la façon de l'intégrer au script qui doit être fausse.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Tu n'as pas précisé sous quel OS tu travaillais...
    Essaye en précédant les parenthèses d'une barre oblique inversée
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre éclairé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Par défaut
    Merci,
    Je suis sous debian

    Pour le regex j'ai trouvé ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (?<=>)([a-zA-Z0-9&: _-]+)(?=<\/a>[ a-zA-Z0-9 _-]*[09]+)
    Je ne vois pas comment m'en servir

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    ouais, ça sent le générateur de regex :/

    je souhaiterai récupérer juste la partie La lectrice
    pourquoi ?
    qu'est-ce qui distingue La lectrice, du reste, dont tu ne veux pas ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre éclairé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Par défaut
    Re
    qu'est-ce qui distingue La lectrice, du reste, dont tu ne veux pas ?
    En fait c'est le titre que je veux récupérer pour pouvoir faire une recherche.

  6. #6
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Je ne vois pas en quoi cette regex a un quelconque rapport avec ta question initiale.

    Pour ce qui est de ta question de départ:

    Éditer des noms de fichier vidéo de manière automatique est plus que galère, car il y a des pièges de tous les cotés ( par exemple: Los.Angeles.2013.1996.blahblah.avi). Donc on va partir du principe que tu souhaites extraire la plus grande partie possible jusqu'à un point suivi de 4 chiffres. Tu as plusieurs possibilités:
    • avec un parameter expansion en Bash qui retire tout à partir de la dernière occurrence: echo "${nom%.[0-9][0-9][0-9][0-9]*}" (la pattern s'exprime avec la syntaxe GLOB)
    • avec GNU grep qui sélectionne la partie à garder: grep -oP '.+(?=\.[0-9]{4})' <(echo "$nom") (avec l'option P, on utilise la syntaxe PCRE)
    • avec sed qui remplace la partie non voulue: sed -E 's/(.*)\.[0-9]{4}.*/\1/' <(echo "$nom") (avec l'option E, on utilise la syntaxe ERE)

  7. #7
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    et comment sait-on que c'est un titre ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Par défaut
    Salut,
    Tu peux essayer comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "La.lectrice.1988.VOSTA.tvrip.XviD.avi" | sed -E 's/(.*\.)[0-9]{4}\..*/Ma boule de cristal me dit que le titre est : \1/;s/\./ /'
    Cordialement

  9. #9
    Membre éclairé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Par défaut
    Merci pour vos réponses.
    Elle a vue juste

  10. #10
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Bonjour

    Citation Envoyé par CosmoKnacki Voir le message
    en Bash qui retire tout à partir de la dernière occurrence: echo "${nom%.[0-9][0-9][0-9][0-9]*}" (la pattern s'exprime avec la syntaxe GLOB)
    Il peut même restreindre le premier chiffre à [12]. Surtout s'il a décidé de mourir le 31 décembre 2999 ou que le cinéma mourra à cette même date. Même pour les péplums.

    Citation Envoyé par CosmoKnacki Voir le message
    <(echo "$nom")[/c] .
    La substitution de processus <( ), c'est bien. Mais un here-string <<<, c'est mieux. non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 'blablabla' <<< "$nom"

  11. #11
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Il peut même restreindre le premier chiffre à [12]
    Mouais, je vois pas trop l'intérêt de cette précision, d'autant plus que le truc le plus susceptible de gêner serait des indications de résolution comme 1080 ou 1080p dans le nom du fichier ou encore un nom de fichier sans date de sortie mais avec une date dans le titre. À part un James Bond sans la date et avec une faute de frappe, ça devrait pas filtrer grand chose.

    La substitution de processus <( ), c'est bien. Mais un here-string <<<, c'est mieux. non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 'blablabla' <<< "$nom"
    Oui, bien sûr, mais c'est plus un placeholder pour ce qui génère les noms de fichier qu'autre chose, pour des commandes qui peuvent traiter un flux de chaînes. Je ne m'attends pas à ce qu'il le recopie dans son code ou qu'il écrive un boucle pour passer des chaînes une par une à grep ou sed.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Expression régulière (regex)
    Par ClarusAD dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/06/2017, 14h45
  2. Expression régulière (regex) pour tester le format d'un password
    Par steph68b dans le forum Général JavaScript
    Réponses: 31
    Dernier message: 11/03/2016, 14h59
  3. Expression régulière (regex)
    Par narutoe dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 04/06/2011, 14h04
  4. Réponses: 11
    Dernier message: 07/04/2010, 17h51
  5. pb avec expression régulière (regex)
    Par rudhf dans le forum C#
    Réponses: 12
    Dernier message: 10/05/2007, 15h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo