Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/05/2008, 17h06   #1
Invité de passage
 
Inscription : mai 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 4
Points : 0
Points : 0
Par défaut Utilisation des regex

Bonjour,

Je voulais vous demander une aide précieuse pour l'utilisation de regex en PHP

voici le pattern sur lequel je travail:
$pattern = "([a-ZA-z0-9])\${{$subject}}([a-ZA-z0-9])";

et voici les 2 type de chaines dans lesquels je recherche grace à ce pattern :

aname-${version}.zip
aname-${version}-aname.zip

J'obtiens l'erreur suivante :
preg_match() [<a href='function.preg-match'>function.preg-match</a>]: Unknown modifier '$'

Je conclue que mon pattern est faux

Quelqu'un pourrait me venir en aide afin que le pattern utilisé fonctionne avec le type de chaine que je souaite trouver

Merci d'avance
djus29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2008, 17h11   #2
Inactif
 
Inscription : mai 2008
Messages : 179
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 179
Points : 179
Points : 179
Un pattern doit être encadré d'un caractère, par exemple /.

http://fr.php.net/preg_match
sielfried est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2008, 17h22   #3
Invité de passage
 
Inscription : mai 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 4
Points : 0
Points : 0
Par défaut merci..

Merci, mais les example peuvent aussi marcher sans ce caractere

De plus, pour tester, j'ai quand meme mis le caracter '/', mais l'erreur devient:
Unknown modifier '/'

Any other suggestions ?
djus29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2008, 17h27   #4
Inactif
 
Inscription : mai 2008
Messages : 179
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 179
Points : 179
Points : 179
Citation:
Envoyé par djus29 Voir le message
Merci, mais les example peuvent aussi marcher sans ce caractere
Non. Il en faut un, pas forcément / mais il en faut un.

Citation:
De plus, pour tester, j'ai quand meme mis le caracter '/', mais l'erreur devient:
Unknown modifier '/'

Any other suggestions ?
Fais voir ton masque.

Au passage, t'es censé échapper les { et les } il me semble, car ce sont des caractères spéciaux.
sielfried est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2008, 17h30   #5
Invité de passage
 
Inscription : mai 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 4
Points : 0
Points : 0
Oui effectivement il en faut 1: si je mets les parentheses, ca passe

pour ce qui est des accolades, elles sont échappés par la double accolade

pattern: ([a-zA-Z0-9]-\${{$subject}}-[A-zA-Z0-9])
masque généré: ([a-zA-Z0-9]-${version}-[A-zA-Z0-9])

je veux trouver ceci :

aname-${version}.zip
aname-${version}-aname.zip
djus29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2008, 17h34   #6
Inactif
 
Inscription : mai 2008
Messages : 179
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 179
Points : 179
Points : 179
Une double accolade n'échappe pas une accolade. Il faut échapper avec un backslash.

Et c'est une très mauvaise idée d'englober sa regexp par des parenthèses, et c'est ça qui te fait planter la tienne (parce que tu en as dans l'expression même).
sielfried est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2008, 17h41   #7
Invité de passage
 
Inscription : mai 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 4
Points : 0
Points : 0
Tres bien, en prenant compte de tes conseils, voici:

pattern: "/[a-zA-Z0-9]-\$\{$subject\}-[A-zA-Z0-9]/"
masque : "/[a-zA-Z0-9]-$\{version\}-[A-zA-Z0-9]/"

j'ai plus d'erreur, mais néanmoins le type de chaine que je recherche n'est pas trouvée

Il doit manquer quelquechose dans la définition du pattern ??
djus29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2008, 17h43   #8
Membre régulier
 
Avatar de arthak
 
Développeur informatique
Inscription : mai 2008
Messages : 91
Détails du profil
Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mai 2008
Messages : 91
Points : 86
Points : 86
Code :
$pattern = "([a-zA-Z0-9]*)-\$\{".$version."\}([a-zA-Z0-9\.]*)";


L'étoile pour la possibilité de répétition du caractère, et j'ai rajouté le \. pour le "." du zip. sinon sans le zip ben c'est :

Code :
$pattern = "([a-zA-Z0-9]*)-\$\{".$version."\}([a-zA-Z0-9]*)";
arthak est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h06.


 
 
 
 
Partenaires

Hébergement Web