Question Recherche de string
- Kevin Byrne-Langlois
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 15 ans 6 mois #7822
par Kevin Byrne-Langlois
Recherche de string a été créé par Kevin Byrne-Langlois
Je fais souvent des recherches et comparaison de string et je n'avais jamais rencontré ce problème. Voici mon code initiale :
[code:1] $StringToFind = \"`/`/vT` `+= `\"Ind. performance;Indicateurs de performance\"
$StringToFind2 = \"`/`/vT` `+= `\"Courant`;Indicateurs de performance courant\"
$StringToFind3 = \"`/`/vT` `+= `\"Complet`;Indicateurs de performance\"
$StringToReplace = \"vT` `+= `\"Ind. performance;Indicateurs de performance\"
$StringToReplace2 = \"vT` `+= `\"Courant`;Indicateurs de performance courant\"
$StringToReplace3 = \"vT` `+= `\"Complet`;Indicateurs de performance\"
Set-content $GRFMenuFile $(switch -regex -file $GRFMenuFile {
$StringToFind {$_ -replace $matches[0],$StringToReplace}
$StringToFind2 {$_ -replace $matches[0], $StringToReplace2}
$StringToFind3 {$_ -replace $matches[0], $StringToReplace3}
default {$_}
})
[/code:1]
$StringtoFind2 et 3 ne fonctionne pas. Après des tests je me suis rendu compte qu'il bloquait au =, je me rappel pas qu'on devait \"escaper\" le charactère =. Même si je le fais ça marche pas, j'ai essayé avec des string, here string, regex.
Si je fais une match ca me donne false :
[code:1]
$StringToFind2 = @\"
//vT += \"Courant;Indicateurs de performance courant\"
\"@
clear
[regex]::IsMatch($StringToFind2, \"//vT += \"«»)
[/code:1]
J'ai cherché la documentation, en cas que le = soit spécial mais j'ai rien trouvé.
Quelqu'un à une idée ?
Message édité par: Grifter, à: 19/09/10 17:01
Message édité par: Grifter, à: 20/09/10 01:19
Message édité par: Grifter, à: 20/09/10 01:20<br><br>Message édité par: Grifter, à: 20/09/10 02:02
[code:1] $StringToFind = \"`/`/vT` `+= `\"Ind. performance;Indicateurs de performance\"
$StringToFind2 = \"`/`/vT` `+= `\"Courant`;Indicateurs de performance courant\"
$StringToFind3 = \"`/`/vT` `+= `\"Complet`;Indicateurs de performance\"
$StringToReplace = \"vT` `+= `\"Ind. performance;Indicateurs de performance\"
$StringToReplace2 = \"vT` `+= `\"Courant`;Indicateurs de performance courant\"
$StringToReplace3 = \"vT` `+= `\"Complet`;Indicateurs de performance\"
Set-content $GRFMenuFile $(switch -regex -file $GRFMenuFile {
$StringToFind {$_ -replace $matches[0],$StringToReplace}
$StringToFind2 {$_ -replace $matches[0], $StringToReplace2}
$StringToFind3 {$_ -replace $matches[0], $StringToReplace3}
default {$_}
})
[/code:1]
$StringtoFind2 et 3 ne fonctionne pas. Après des tests je me suis rendu compte qu'il bloquait au =, je me rappel pas qu'on devait \"escaper\" le charactère =. Même si je le fais ça marche pas, j'ai essayé avec des string, here string, regex.
Si je fais une match ca me donne false :
[code:1]
$StringToFind2 = @\"
//vT += \"Courant;Indicateurs de performance courant\"
\"@
clear
[regex]::IsMatch($StringToFind2, \"//vT += \"«»)
[/code:1]
J'ai cherché la documentation, en cas que le = soit spécial mais j'ai rien trouvé.
Quelqu'un à une idée ?
Message édité par: Grifter, à: 19/09/10 17:01
Message édité par: Grifter, à: 20/09/10 01:19
Message édité par: Grifter, à: 20/09/10 01:20<br><br>Message édité par: Grifter, à: 20/09/10 02:02
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 15 ans 6 mois #7823
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Recherche de string
Salut,
peux-tu éditer ton premier post et utiliser les balises code ?
Tel quel, j'ai un doute sur la construction du second bloc de code.<br><br>Message édité par: Laurent Dardenne, à: 19/09/10 17:51
peux-tu éditer ton premier post et utiliser les balises code ?
Tel quel, j'ai un doute sur la construction du second bloc de code.<br><br>Message édité par: Laurent Dardenne, à: 19/09/10 17:51
Tutoriels PowerShell
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 15 ans 6 mois #7825
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Recherche de string
Pour échapper une regex il faut procéder ainsi :
[code:1]
$StringToFind = [regex]::Escape(\"//vT += `\"Ind. performance;Indicateurs de performance\"«»)
$StringToFind
[/code:1]
Ici il y a donc 2 niveaux d'échappement, le premier pour la regex le second pour l'interpréteur PowerShell.
[code:1]
$StringToFind = [regex]::Escape(\"//vT += `\"Ind. performance;Indicateurs de performance\"«»)
$StringToFind
[/code:1]
Ici il y a donc 2 niveaux d'échappement, le premier pour la regex le second pour l'interpréteur PowerShell.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Kevin Byrne-Langlois
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 15 ans 5 mois #7838
par Kevin Byrne-Langlois
Réponse de Kevin Byrne-Langlois sur le sujet Re:Recherche de string
Malheureusement ça ne fonctionne pas plus !!! Il reconnait pas la string à changer.
Le code suivant donne false :
[code:1]
$StringToFind = [regex]::Escape(\"//vT += `\"Ind. performance;Indicateurs de performance\"«»)
$StringToFind2 = [regex]::Escape(\"//vT += `\"Ind. performance;Indicateurs de performance\"«»)
[Regex]::IsMatch($StringToFind,$StringToFind2)
[/code:1]<br><br>Message édité par: Grifter, à: 21/09/10 17:37
Le code suivant donne false :
[code:1]
$StringToFind = [regex]::Escape(\"//vT += `\"Ind. performance;Indicateurs de performance\"«»)
$StringToFind2 = [regex]::Escape(\"//vT += `\"Ind. performance;Indicateurs de performance\"«»)
[Regex]::IsMatch($StringToFind,$StringToFind2)
[/code:1]<br><br>Message édité par: Grifter, à: 21/09/10 17:37
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 15 ans 5 mois #7839
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Recherche de string
Grifter écrit:
[code:1]
[Regex]::IsMatch.OverloadDefinitions
#static bool IsMatch(string input, string pattern)
[/code:1]
[code:1]
#Input est un nom de variable automatique
$Sinput = \"//vT += `\"Ind. performance;Indicateurs de performance\"
#Echappe la regex, car le point, notamment, est un métacaractère
#mais on recherche bien la chaîne $Sinput.
$Pattern = [regex]::Escape(\"//vT += `\"Ind. performance;Indicateurs de performance\"«»)
[Regex]::IsMatch($Sinput,$Pattern)
#True
[/code:1]
Ton exemple ne peut réussir car tu modifies la chaîne à rechercherMalheureusement ça ne fonctionne pas plus !!! Il reconnait pas la string à changer.
[code:1]
[Regex]::IsMatch.OverloadDefinitions
#static bool IsMatch(string input, string pattern)
[/code:1]
Ce code renvoi $True :input
Type : System.String
Chaîne dans laquelle une correspondance doit être recherchée.
pattern
Type : System.String
Modèle d'expression régulière à mettre en correspondance.
[code:1]
#Input est un nom de variable automatique
$Sinput = \"//vT += `\"Ind. performance;Indicateurs de performance\"
#Echappe la regex, car le point, notamment, est un métacaractère
#mais on recherche bien la chaîne $Sinput.
$Pattern = [regex]::Escape(\"//vT += `\"Ind. performance;Indicateurs de performance\"«»)
[Regex]::IsMatch($Sinput,$Pattern)
#True
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.097 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les initiés
- Recherche de string