Question
Problème Regular Expression
- sebastien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 32
- Remerciements reçus 0
il y a 12 ans 3 semaines #17077
par sebastien
Problème Regular Expression a été créé par sebastien
Bonjour à tous,
Je me retrouve à devoir modifier deux chaines de caractères renvoyées par un get-content. N'ayant jamais utilisé de RegEx, je me suis donc lancé, sans grand résultat.
Je suis donc à la recherche d'une ressource claire (et bien expliquée et avec beaucoup d'exemples
). J'en ai déjà lu un bon paquet, mais c'est pas si simple que ça ... A défaut je veux bien la solution
mais accompagnée de quelques lignes explicatives, pour en comprendre le fonctionnement.
Voici les deux lignes qui me posent problèmes :
WavesDirections = [0, -22.5, -45, 10, 25]
WavePeriods_WaveHs = [(6, 1.75)][(6, 1.75), (7, 1.75), (8, 2.0), (9, 2.0), (10, 2.5), (11, 2.5), (12, 2.5), (13, 2.5), (14, 2.5), (15, 2.5), (16, 2.0), (17, 2.0), (18, 2.0)]
Mon script étant emmené à remplacer les valeurs à l’intérieur des [ ]. Le nombre de valeurs est aléatoire.
Voici le mieux que j'ai pu faire... :
[code:1]
[regex]$regex1 = \"WavesDirections = \w*\"
[regex]$regex2 = \"WavePeriods_WaveHs = \w*\"
Get-Content $files.$file.fso | % {$_ -replace $regex1, \"WavesDirections = [$WavesDirection]\"} | % {$_ -replace $regex2, \"WavePeriods_WaveHs = [($WavePeriod)]\" } | Out-File ($task_folder.FullName+\"\\"+$files.$file.fso.Name)[/code:1]
Bonne journée à tous !<br><br>Message édité par: sebasti1, à: 24/02/14 10:15
Je me retrouve à devoir modifier deux chaines de caractères renvoyées par un get-content. N'ayant jamais utilisé de RegEx, je me suis donc lancé, sans grand résultat.
Je suis donc à la recherche d'une ressource claire (et bien expliquée et avec beaucoup d'exemples
Voici les deux lignes qui me posent problèmes :
WavesDirections = [0, -22.5, -45, 10, 25]
WavePeriods_WaveHs = [(6, 1.75)][(6, 1.75), (7, 1.75), (8, 2.0), (9, 2.0), (10, 2.5), (11, 2.5), (12, 2.5), (13, 2.5), (14, 2.5), (15, 2.5), (16, 2.0), (17, 2.0), (18, 2.0)]
Mon script étant emmené à remplacer les valeurs à l’intérieur des [ ]. Le nombre de valeurs est aléatoire.
Voici le mieux que j'ai pu faire... :
[code:1]
[regex]$regex1 = \"WavesDirections = \w*\"
[regex]$regex2 = \"WavePeriods_WaveHs = \w*\"
Get-Content $files.$file.fso | % {$_ -replace $regex1, \"WavesDirections = [$WavesDirection]\"} | % {$_ -replace $regex2, \"WavePeriods_WaveHs = [($WavePeriod)]\" } | Out-File ($task_folder.FullName+\"\\"+$files.$file.fso.Name)[/code:1]
Bonne journée à tous !<br><br>Message édité par: sebasti1, à: 24/02/14 10:15
Connexion ou Créer un compte pour participer à la conversation.
- sebastien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 32
- Remerciements reçus 0
il y a 12 ans 3 semaines #17078
par sebastien
Réponse de sebastien sur le sujet Re:Problème Regular Expression
Bon en bidouillant des scripts trouvés sur internet, j'ai réussi a faire ça :
[code:1]
Get-Content $files.$file.fso | % {
If ( $_ -match \"WavesDirections = \[([^\[]*)\]\"«»)
{
$_.replace($Matches[1],$WavesDirection)
}
Elseif ( $_ -match \"WavePeriods_WaveHs = \[([^\[]*)\]\"«»)
{
$_.replace($Matches[1],$WavePeriod)
}
Else
{
$_
}
}| Out-File ($task_folder.FullName+\"\\"+$files.$file.fso.Name)
[/code:1]
Ce code fonctionne mais je ne sais toujours pas comment/pourquoi. Une ressource explicative et/ou une explication directe serait la bienvenue
Merci
[code:1]
Get-Content $files.$file.fso | % {
If ( $_ -match \"WavesDirections = \[([^\[]*)\]\"«»)
{
$_.replace($Matches[1],$WavesDirection)
}
Elseif ( $_ -match \"WavePeriods_WaveHs = \[([^\[]*)\]\"«»)
{
$_.replace($Matches[1],$WavePeriod)
}
Else
{
$_
}
}| Out-File ($task_folder.FullName+\"\\"+$files.$file.fso.Name)
[/code:1]
Ce code fonctionne mais je ne sais toujours pas comment/pourquoi. Une ressource explicative et/ou une explication directe serait la bienvenue
Merci
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 12 ans 3 semaines #17079
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Problème Regular Expression
Salut,
sebasti1 écrit:
Ce tuto , explique bien à mon avis le principe de consommation lié au regex .
De plus sache que la progression de l'apprentissage n'est pas constant, le début est relativement aisé et rapide, ensuite on plafonne qq temps avant de pouvoir aborder les points avancées.
sebasti1 écrit:
[code:1]
\"WavesDirections = \[ \]\" : Recherche une chaîne, les caractéres crochet sont échappés, car il s'agit de métacaractères de regex
() : groupe de capture
[^\[] : exclusion d'un caractère, on recherche tout SAUF '['
* : Quantificateurs, 0 ou n caractères
[/code:1]
N'ayant pas de jeux de test et d'explication précises, j'ai un doute sur ta seconde regex.
sebasti1 écrit:
Il y a sur ce forum qq posts qui recensent ce type de doc, je te laisse chercher.Je suis donc à la recherche d'une ressource claire (et bien expliquée et avec beaucoup d'exemples ).
Ce tuto , explique bien à mon avis le principe de consommation lié au regex .
De plus sache que la progression de l'apprentissage n'est pas constant, le début est relativement aisé et rapide, ensuite on plafonne qq temps avant de pouvoir aborder les points avancées.
sebasti1 écrit:
Pour \"WavesDirections = \[([^\[]*)\]\" :Une ressource explicative et/ou une explication directe serait la bienvenue
[code:1]
\"WavesDirections = \[ \]\" : Recherche une chaîne, les caractéres crochet sont échappés, car il s'agit de métacaractères de regex
() : groupe de capture
[^\[] : exclusion d'un caractère, on recherche tout SAUF '['
* : Quantificateurs, 0 ou n caractères
[/code:1]
N'ayant pas de jeux de test et d'explication précises, j'ai un doute sur ta seconde regex.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- sebastien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 32
- Remerciements reçus 0
il y a 12 ans 3 semaines #17083
par sebastien
Réponse de sebastien sur le sujet Re:Problème Regular Expression
Merci pour les liens, je vais les lire avec attention. En revanche, je pense comprendre en partie pourquoi mes recherches ne m'ont pas données de résultats 'probants', je m'étais limité au sites liés au powershell. Il semble que les regex soient un peu plus universel
.
Merci pour les ressources !
Merci pour les ressources !
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.058 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Problème Regular Expression