Question
Expressions régulieres ? (Résolu)
- Lepertel
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 15
- Remerciements reçus 0
il y a 15 ans 11 mois #1216
par Lepertel
Expressions régulieres ? (Résolu) a été créé par Lepertel
Hello les powershelleur 
Voici mon probleme : Une requete AD me reccupere un chemin LDAP du type CN=Groupname,OU=xxxx,DC=test,DC=org que je mets dans une variable.
Jusque le tout va bien
.
Je souhaite en fait, juste reccuperer la valeur contenue correspondant à Groupname. J'ai essayé avec une expression reguliere du type 'CN=(.+),*\", mais sans succés (le CN= disparait bien, mais le reste de ma chaine reste alors que je voudrais supprimer tout ce qui se trouve derriere la derniere virgule).
Pouvez vous m'aider à trouver la bonne expression regulière, ou une autre méthode ?
Merci par avance
Stephane<br><br>Message édité par: Arnaud, à: 30/11/07 10:04

Voici mon probleme : Une requete AD me reccupere un chemin LDAP du type CN=Groupname,OU=xxxx,DC=test,DC=org que je mets dans une variable.
Jusque le tout va bien

Je souhaite en fait, juste reccuperer la valeur contenue correspondant à Groupname. J'ai essayé avec une expression reguliere du type 'CN=(.+),*\", mais sans succés (le CN= disparait bien, mais le reste de ma chaine reste alors que je voudrais supprimer tout ce qui se trouve derriere la derniere virgule).
Pouvez vous m'aider à trouver la bonne expression regulière, ou une autre méthode ?
Merci par avance
Stephane<br><br>Message édité par: Arnaud, à: 30/11/07 10:04
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 11 mois #1219
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:expressions regulieres ?
La syntaxe que tu utilises récupère la chaîne correspondante la plus longue possible. C'est ce qu'on appelle le mode \"greedy\" des expressions régulières, \"greedy\" voulant dire cupide: l'expression régulière ramasse le plus possible.
Pour récupérer la chaîne correspondante la plus courte possible, il faut utiliser une syntaxe \"lazy\", c'est-à-dire paresseuse. Dans ton cas, ça peut se faire ainsi:
[code:1]
PS> $path = \"CN=Utilisateurs,OU=xxxx,DC=test,DC=org\"
PS> $path -match 'CN=(?<groupname>.+?),'
True
PS> $matches.groupname
Utilisateurs[/code:1]
J'ai ajouté un nom à la collection '?<groupname>' pour la clarté de l'exemple, mais l'idée principale est d'ajouter un '?' après '.+'. C'est ce point d'interrogation qui indique qu'il faut être paresseux et non cupide.
Janel<br><br>Message édité par: janel, à: 23/10/07 05:14
Pour récupérer la chaîne correspondante la plus courte possible, il faut utiliser une syntaxe \"lazy\", c'est-à-dire paresseuse. Dans ton cas, ça peut se faire ainsi:
[code:1]
PS> $path = \"CN=Utilisateurs,OU=xxxx,DC=test,DC=org\"
PS> $path -match 'CN=(?<groupname>.+?),'
True
PS> $matches.groupname
Utilisateurs[/code:1]
J'ai ajouté un nom à la collection '?<groupname>' pour la clarté de l'exemple, mais l'idée principale est d'ajouter un '?' après '.+'. C'est ce point d'interrogation qui indique qu'il faut être paresseux et non cupide.
Janel<br><br>Message édité par: janel, à: 23/10/07 05:14
Connexion ou Créer un compte pour participer à la conversation.
- Lepertel
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 15
- Remerciements reçus 0
il y a 15 ans 11 mois #1221
par Lepertel
Réponse de Lepertel sur le sujet Re:expressions regulieres ?
Super, ca marche nickel 
Trop fort tu es
Sais tu ou je peux trouver de la documentation sur les expressions régulières, car a chaque fois je galère pour trouver la bonne syntaxe à utiliser.
Merci encore
Stéphane

Trop fort tu es

Sais tu ou je peux trouver de la documentation sur les expressions régulières, car a chaque fois je galère pour trouver la bonne syntaxe à utiliser.
Merci encore
Stéphane
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 11 mois #1222
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:expressions regulieres ?
Les expressions régulières sont utilisées dans une multitude d'environnements, tu trouveras donc des tonnes de sites de référence sur Internet.
Mais malheureusement, il existe des différences (parfois subtiles) dans les implémentations. Donc le mieux pour se faire une idée de la syntaxe utilisable dans PowerShell, c'est encore MSDN. PowerShell repose sur le .NET Framework, et c'est également valable pour son support des expressions régulières:
msdn2.microsoft.com/fr-fr/library/hs600312(vs.80).aspx
Janel
Mais malheureusement, il existe des différences (parfois subtiles) dans les implémentations. Donc le mieux pour se faire une idée de la syntaxe utilisable dans PowerShell, c'est encore MSDN. PowerShell repose sur le .NET Framework, et c'est également valable pour son support des expressions régulières:
msdn2.microsoft.com/fr-fr/library/hs600312(vs.80).aspx
Janel
Connexion ou Créer un compte pour participer à la conversation.
- Lepertel
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 15
- Remerciements reçus 0
il y a 15 ans 11 mois #1223
par Lepertel
Réponse de Lepertel sur le sujet Re:expressions regulieres ?
encore une question (suite
)
En fait l'expression reguliere fonctionne correctement dans le cas ou ma requete me retourne un seul groupe. Mais dans certains ca, je vais reccuperer plusieurs groupes et mon resultat sera de la forme CN=toto,OU=test,DC=x,DC=y CN=titi,OU=test2,DC=x,DC=y et dans ce cas, je dois reccuperer l'ensemble des valeurs CN=. Ya til un mode paresseux mais pas trop dans les expressions reguliéres ?
Merci encore pour ton aide
Stephane

En fait l'expression reguliere fonctionne correctement dans le cas ou ma requete me retourne un seul groupe. Mais dans certains ca, je vais reccuperer plusieurs groupes et mon resultat sera de la forme CN=toto,OU=test,DC=x,DC=y CN=titi,OU=test2,DC=x,DC=y et dans ce cas, je dois reccuperer l'ensemble des valeurs CN=. Ya til un mode paresseux mais pas trop dans les expressions reguliéres ?

Stephane
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 11 mois #1225
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:expressions regulieres ?
Alors là, on atteint les limites de la syntaxe d'une expression régulière dans l'implémentation du .NET Framework! 
Heureusement, on peut s'en sortir avec les API du même .NET Framework:
[code:1]
$regex = new-object regex \"CN=(.+?),\"
$result = $regex.match($path)
while ($result.success) {
$result.groups[1].value
$result = $result.nextmatch()
}[/code:1]
Ca devrait le faire.
Sur ce, moi, j'vais m'coucher...
Janel

Heureusement, on peut s'en sortir avec les API du même .NET Framework:
[code:1]
$regex = new-object regex \"CN=(.+?),\"
$result = $regex.match($path)
while ($result.success) {
$result.groups[1].value
$result = $result.nextmatch()
}[/code:1]
Ca devrait le faire.
Sur ce, moi, j'vais m'coucher...

Janel
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.052 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Expressions régulieres ? (Résolu)