Résolu Regex pour supprimer un bloc entre parenthèse
- Gabriel
- Auteur du sujet
- Hors Ligne
- Membre elite
Réduire
Plus d'informations
- Messages : 248
- Remerciements reçus 1
il y a 3 ans 5 mois - il y a 3 ans 5 mois #30883
par Gabriel
Regex pour supprimer un bloc entre parenthèse a été créé par Gabriel
Hello
j'ai un ensemble de fichiers à renommer et je cherche à supprimer des blocs de chaine entre parenthèse (tout en laissant d'autres chaines de caractères entre parenthèse)
voici les lignes, je veux supprimer "(hoho-Empire)"
bon j'ai bidouillé cela, mais c'est visiblement un poil violent:
de ce que je comprends la regex, qui va de gauche à droite, prend la première parenthèse jusqu'à "Empire)" et donc prend "(2020) (digital) (hoho-Empire)"
Evidement j'ai n'importe quelle chaine de caractères et longueur entre "(" et "empire)" mais je veux garder (2020) et (digital)
un gentil powershelleur qui est à l'aise avec les Regex pour éclairer ma lanterne de noob en Regex?
j'ai un ensemble de fichiers à renommer et je cherche à supprimer des blocs de chaine entre parenthèse (tout en laissant d'autres chaines de caractères entre parenthèse)
voici les lignes, je veux supprimer "(hoho-Empire)"
"this is a test (2020) (digital) (hoho-Empire)"
bon j'ai bidouillé cela, mais c'est visiblement un poil violent:
PS C:\> "this is a test (2020) (digital) (hoho-Empire)" -replace "\(.+empire\)",""
this is a test
de ce que je comprends la regex, qui va de gauche à droite, prend la première parenthèse jusqu'à "Empire)" et donc prend "(2020) (digital) (hoho-Empire)"
Evidement j'ai n'importe quelle chaine de caractères et longueur entre "(" et "empire)" mais je veux garder (2020) et (digital)
"this is a test (2020) (digital) (hoho-Empire)"
"this is a test (2020) (digital) (ho123-Empire)"
"this is a test (2020) (digital) (honianuhvdfuysdg-Empire)"
un gentil powershelleur qui est à l'aise avec les Regex pour éclairer ma lanterne de noob en Regex?
Dernière édition: il y a 3 ans 5 mois par Gabriel.
Connexion ou Créer un compte pour participer à la conversation.
- rhiwotar
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 111
- Remerciements reçus 2
il y a 3 ans 5 mois - il y a 3 ans 5 mois #30907
par rhiwotar
Réponse de rhiwotar sur le sujet Regex pour supprimer un bloc entre parenthèse
Salut, je pense avoir trouver
Pour tester tes regex, je te conseille regex101.com/
"this is a test (2020) (digital) (hoho-Empire)" -replace "(\([[:alnum:]]+-Empire\))",""
Pour tester tes regex, je te conseille regex101.com/
Dernière édition: il y a 3 ans 5 mois par Arnaud Petitjean. Raison: Mise en forme du code en utilisant une balise code
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 3 ans 5 mois #30908
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Regex pour supprimer un bloc entre parenthèse
Salut Rhiwotar !
Je pense que ta proposition ne marche pas malheureusement...
En fait ce que veut Gabriel c'est supprimer complètement le dernier morceau de texte contenu entre parenthèses (ainsi que les parenthèses elles-mêmes). Du moins si j'ai bien compris sa demande...
Pas simple quand on n'est pas très expérimentés en RegEx...
Je pense que ta proposition ne marche pas malheureusement...
PS > "this is a test (2020) (digital) (hoho-Empire)" -match "(\(:alnum:+-Empire\))"
$false
En fait ce que veut Gabriel c'est supprimer complètement le dernier morceau de texte contenu entre parenthèses (ainsi que les parenthèses elles-mêmes). Du moins si j'ai bien compris sa demande...
Pas simple quand on n'est pas très expérimentés en RegEx...
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 3 ans 5 mois #30909
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Regex pour supprimer un bloc entre parenthèse
Que diriez-vous de cela ?
Dans ma proposition il n'y a pas l'espace de fin .
Qu'en pensez-vous ?
"this is a test (2020) (digital) (hoho-Empire)" -replace '(.+\(.+\).+\(.+\)).+(\(.+\))','$1'
this is a test (2020) (digital)
Dans ma proposition il n'y a pas l'espace de fin .
Qu'en pensez-vous ?
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Gabriel
- Auteur du sujet
- Hors Ligne
- Membre elite
Réduire
Plus d'informations
- Messages : 248
- Remerciements reçus 1
il y a 3 ans 4 mois #30928
par Gabriel
Réponse de Gabriel sur le sujet Regex pour supprimer un bloc entre parenthèse
ouch a oui c'est de la regex là...
mais c'est '$1' qui me rend perplexe tu remplaces le bloc trouvé par le premier groupe? (alors comme ca ca a l'air impressionant ce que j'ecris, mais meme moi je suis sûr d'avoir pas compris )
par contre la regex s'occupe que du dernier groupe de parenthèse donc l le bloc qui contient empire je ne m'en débarasses pas si un petit malin me le met au milieu
mais c'est '$1' qui me rend perplexe tu remplaces le bloc trouvé par le premier groupe? (alors comme ca ca a l'air impressionant ce que j'ecris, mais meme moi je suis sûr d'avoir pas compris )
par contre la regex s'occupe que du dernier groupe de parenthèse donc l le bloc qui contient empire je ne m'en débarasses pas si un petit malin me le met au milieu
PS C:\>"this is a test (2020) (hoho-Empire) (digital)" -replace '(.+\(.+\).+\(.+\)).+(\(.+\))','$1'
this is a test (2020) (hoho-Empire)
PS C:\>"this is a test (2020) (digital) (hoho-Emppioire)" -replace '(.+\(.+\).+\(.+\)).+(\(.+\))','$1'
this is a test (2020) (digital)
Connexion ou Créer un compte pour participer à la conversation.
- ericlm128
- Visiteur
il y a 3 ans 4 mois #30929
par ericlm128
Réponse de ericlm128 sur le sujet Regex pour supprimer un bloc entre parenthèse
"this is a test (2020) (digital) (hoho-Empire)" -replace "\([^\(]*empire[^\)]*\)",""
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.115 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les initiés
- Regex pour supprimer un bloc entre parenthèse