Question un beau challenge !

Plus d'informations
il y a 11 ans 6 mois #12793 par jojo
un beau challenge ! a été créé par jojo
hello,

alors ce challenge consiste à créer une fonction qui permet de colorer les chaînes matcher par une expression régulière, la fonction doit accepter l'entrée par le pipeline, doit accepter aux moins 5 paramètres:

* file: nom du fichier à traiter (parametersetname='file')

* inputobject: chaine de caractère (parametersetname='input')

*pattern: expression régulère

*color: couleur de la chaîne matcher

* AllMatches: Recherche plusieurs correspondances dans chaque ligne de texte. Sans ce paramètre, on recherche uniquement la première correspondance dans chaque ligne de texte.


qui aurra le courage de relever le défi :)

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

Plus d'informations
il y a 11 ans 6 mois #12798 par SiSMik
Réponse de SiSMik sur le sujet Re:un beau challenge !
Pas trop compris le but de la manoeuvre...

Colorer une chaine ? OK mais la colorer dans quoi ? un fichier ? le shell ? c'est pas très précis ;)

Allmatches, cet argument peut être définit dans une expression régulière... donc inutile dans cette fonction .

Je pense pas que la place de ce post soit dans la partie débutants au passage, surtout à cause des expression régulière ^^

[code:1]if ($var -match $regex) {
Write-host avec couleur de $matches
}[/code:1]

Dans l'idée y'a rien de très compliqué, enfin je peux me tromper.. comme souvent ^^

@+

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

Plus d'informations
il y a 11 ans 6 mois #12799 par jojo
Réponse de jojo sur le sujet Re:un beau challenge !
benduru écrit:

Pas trop compris le but de la manoeuvre...

Colorer une chaine ? OK mais la colorer dans quoi ? un fichier ? le shell ? c'est pas très précis ;)

Allmatches, cet argument peut être définit dans une expression régulière... donc inutile dans cette fonction .

Je pense pas que la place de ce post soit dans la partie débutants au passage, surtout à cause des expression régulière ^^

[code:1]if ($var -match $regex) {
Write-host avec couleur de $matches
}[/code:1]

Dans l'idée y'a rien de très compliqué, enfin je peux me tromper.. comme souvent ^^

@+


hello benduru :lol:

le but est de colorer seulement la partie matcher dans le shell:

par exemple on à une chaine contenant:

[code:1]$chaine = 'update xxx 1/2/02 kb75454 xxxx kb74418 kkk'[/code:1]

et un regex:
[code:1]
$regex = 'kb\d{5}'[/code:1]

la ligne de commande suivante:

[code:1]get-matches $chaine $regex -all -color green[/code:1]

va récrire la chaîne $chaine dans le shell mais va colorer kb75454 et kb74418 en bleu

c'est une sorte d'un outil visuel pour qu'on tests nos Regex<br><br>Message édité par: jojo, à: 28/09/12 13:34

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

Plus d'informations
il y a 11 ans 6 mois #12802 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:un beau challenge !
La gestion de texte coloré dans la console n'est pas une sinécure, c'est possible si tu as le temps d'étudier les routines du host Powershell.

Un exemple :
www.leeholmes.com/blog/2008/02/12/realti...-powershell-console/
Une autre difficulté gérer le curseur :laugh:

Une approche basée cmdlet :
stackoverflow.com/questions/7362097/colo...-format-table-output
En revanche pour les performances...

Tutoriels PowerShell

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

Plus d'informations
il y a 11 ans 5 mois #12810 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:un beau challenge !
Voici \&quot;un truc\&quot;, qui n'est ni une ébauche ni une solution :
[code:1]
$s=\&quot;!PowerShell n'a pas d'opérateur Power, donc peu de 'Power'\&quot;
$regex=\&quot;Power\&quot;
$Grp=[regex]::Matches($s,$regex)
$grp

$ViewRegex={
$Bc=$Host.UI.RawUI.NewBufferCellArray(@($s),
$host.ui.RawUI.ForegroundColor,
$host.ui.RawUI.BackgroundColor)
$curseur=0
$CursorPos=[console]::CursorTop+1
$pos= New-Object System.Management.Automation.Host.Coordinates($Curseur,$CursorPos)
$Host.UI.RawUI.SetBufferContents( $Pos, $BC)
$grp| foreach {
$Groupe=$_
$Bc=$Host.UI.RawUI.NewBufferCellArray(@($Groupe.Value),
$host.PrivateData.ProgressForegroundColor,
$host.PrivateData.ProgressBackgroundColor)
$pos= New-Object System.Management.Automation.Host.Coordinates($Groupe.Index,$CursorPos)
$Host.UI.RawUI.SetBufferContents( $Pos, $BC)
}
}

cls;&amp;$ViewRegex
$s=\&quot;RIRIfifiloulou\&quot;
$regex=\&quot;RIRI|fifi|loulou\&quot;
$Grp=[regex]::Matches($s,$regex)
cls;&amp;$ViewRegex

$s=\&quot;RIRI a deux fréres fifi et loulou\&quot;
$regex=\&quot;RIRI|fifi|loulou\&quot;
$Grp=[regex]::Matches($s,$regex)
cls;&amp;$ViewRegex
[/code:1]
Vue les possibilités des regex, multilignes notamment, je te laisse étudier le sujet B)<br><br>Message édité par: Laurent Dardenne, à: 28/09/12 20:31

Tutoriels PowerShell

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

Plus d'informations
il y a 11 ans 5 mois #12859 par jojo
Réponse de jojo sur le sujet Re:un beau challenge !
Laurent Dardenne écrit:

Voici \&quot;un truc\&quot;, qui n'est ni une ébauche ni une solution :
[code:1]
$s=\&quot;!PowerShell n'a pas d'opérateur Power, donc peu de 'Power'\&quot;
$regex=\&quot;Power\&quot;
$Grp=[regex]::Matches($s,$regex)
$grp

$ViewRegex={
$Bc=$Host.UI.RawUI.NewBufferCellArray(@($s),
$host.ui.RawUI.ForegroundColor,
$host.ui.RawUI.BackgroundColor)
$curseur=0
$CursorPos=[console]::CursorTop+1
$pos= New-Object System.Management.Automation.Host.Coordinates($Curseur,$CursorPos)
$Host.UI.RawUI.SetBufferContents( $Pos, $BC)
$grp| foreach {
$Groupe=$_
$Bc=$Host.UI.RawUI.NewBufferCellArray(@($Groupe.Value),
$host.PrivateData.ProgressForegroundColor,
$host.PrivateData.ProgressBackgroundColor)
$pos= New-Object System.Management.Automation.Host.Coordinates($Groupe.Index,$CursorPos)
$Host.UI.RawUI.SetBufferContents( $Pos, $BC)
}
}

cls;&amp;$ViewRegex
$s=\&quot;RIRIfifiloulou\&quot;
$regex=\&quot;RIRI|fifi|loulou\&quot;
$Grp=[regex]::Matches($s,$regex)
cls;&amp;$ViewRegex

$s=\&quot;RIRI a deux fréres fifi et loulou\&quot;
$regex=\&quot;RIRI|fifi|loulou\&quot;
$Grp=[regex]::Matches($s,$regex)
cls;&amp;$ViewRegex
[/code:1]
Vue les possibilités des regex, multilignes notamment, je te laisse étudier le sujet B)&lt;br&gt;&lt;br&gt;Message édité par: Laurent Dardenne, à: 28/09/12 20:31


hello Laurent :laugh:

désolé pour le retard et merci pour le bijoux :silly:

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

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