Question Problème Regular Expression

Plus d'informations
il y a 12 ans 3 semaines #17077 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 :p ). 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 :silly: 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

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
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 \&quot;WavesDirections = \[([^\[]*)\]\&quot;«»)
{
$_.replace($Matches[1],$WavesDirection)
}
Elseif ( $_ -match \&quot;WavePeriods_WaveHs = \[([^\[]*)\]\&quot;«»)
{
$_.replace($Matches[1],$WavePeriod)
}
Else
{
$_
}
}| Out-File ($task_folder.FullName+\&quot;\\&quot;+$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.

Plus d'informations
il y a 12 ans 3 semaines #17079 par Laurent Dardenne
Salut,
sebasti1 écrit:

Je suis donc à la recherche d'une ressource claire (et bien expliquée et avec beaucoup d'exemples ).

Il y a sur ce forum qq posts qui recensent ce type de doc, je te laisse chercher.
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:

Une ressource explicative et/ou une explication directe serait la bienvenue

Pour \&quot;WavesDirections = \[([^\[]*)\]\&quot; :
[code:1]
\&quot;WavesDirections = \[ \]\&quot; : 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.

Plus d'informations
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 :pinch:.


Merci pour les ressources !

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.065 secondes
Propulsé par Kunena