Expression regulière besoin d'aide
flyzi
Messages postés
89
Statut
Membre
-
heyquem Messages postés 808 Statut Membre -
heyquem Messages postés 808 Statut Membre -
Bonjour,
Je voudrais afficher toutes les lignes qui commencent par :
* espaceOuNon [ [ digit ]]
j'ai testé ça comme regex, sans succès :
$regex2="#^\* \[\[[[0-9]*\]\]#"
exemple de ligne :
* [[1702]] : Le prince [[Eugène de Savoie]] attaque [[Crémone]].
merci d'avance pour votre aide
Je voudrais afficher toutes les lignes qui commencent par :
* espaceOuNon [ [ digit ]]
j'ai testé ça comme regex, sans succès :
$regex2="#^\* \[\[[[0-9]*\]\]#"
exemple de ligne :
* [[1702]] : Le prince [[Eugène de Savoie]] attaque [[Crémone]].
merci d'avance pour votre aide
A voir également:
- Expression regulière besoin d'aide
- Expression écrite cm1 cm2 télécharger gratuit - Télécharger - Éducatifs
- Microsoft expression encoder - Télécharger - Divers Utilitaires
- Expression de recherche - Guide
- T'as du ping expression - Forum Réseau
- Avoir du ping expression ✓ - Forum jeux en ligne
8 réponses
Bonjour,
Sans avoir testé, j'aurais fait : "^\* \[\[[0-9]+\]\]"
Apparemment, dans ton expression, tu as un "[" en trop ;
Et je ne comprend pas pourquoi tu as mis des "#".
Je te conseille [0-9]+ au lieu de [0-9]* ; car il faut au moins un chiffre entre les [].
Cordialement, M.
Sans avoir testé, j'aurais fait : "^\* \[\[[0-9]+\]\]"
Apparemment, dans ton expression, tu as un "[" en trop ;
Et je ne comprend pas pourquoi tu as mis des "#".
Je te conseille [0-9]+ au lieu de [0-9]* ; car il faut au moins un chiffre entre les [].
Cordialement, M.
Re,
Je ne connais pas bien le PHP mais je suppose que le '\' est un "escape character" ; et donc qu'il faut le doubler pour qu'il soit conservé...
Je suppose que si tu affiche le contenu de $regex2, tu n'auras pas ton expression régulière.
Il faudrait donc affecter ta chaîne comme ça :
$regex2="^\\* \\[\\[[0-9]+\\]\\]"
Qu'en penses-tu ?
Cordialement, M.
Je ne connais pas bien le PHP mais je suppose que le '\' est un "escape character" ; et donc qu'il faut le doubler pour qu'il soit conservé...
Je suppose que si tu affiche le contenu de $regex2, tu n'auras pas ton expression régulière.
Il faudrait donc affecter ta chaîne comme ça :
$regex2="^\\* \\[\\[[0-9]+\\]\\]"
Qu'en penses-tu ?
Cordialement, M.
ça ne fonctionne pas. On dirait que aucune de mes lignes ne commencent par * et pourtant je ne rêve pas :
-> http://fr.wikipedia.org/w/index.php?title=%s&action=raw
voici mon code (permet de récupérer des dates sur wikipedia) :
$search="1er_février";
$url = sprintf('http://fr.wikipedia.org/w/index.php?title=%s&action=raw', urlencode($search));
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'http://mondomaine.fr');
$result = curl_exec($ch);
curl_close($ch);
$result=nl2br($result); //ajoute de <br /> à la fin de chaque ligne
$result=explode("<br />",$result); //on sépare chaque ligne
$regex2="#^\* \[\[[0-9]+\]\]#" ;
//on parcours se tableau
foreach($result as $ligne) {
if(preg_match($regex2,$ligne)) {
echo $ligne.'<br />';
}
}
merci d'avance
-> http://fr.wikipedia.org/w/index.php?title=%s&action=raw
voici mon code (permet de récupérer des dates sur wikipedia) :
$search="1er_février";
$url = sprintf('http://fr.wikipedia.org/w/index.php?title=%s&action=raw', urlencode($search));
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'http://mondomaine.fr');
$result = curl_exec($ch);
curl_close($ch);
$result=nl2br($result); //ajoute de <br /> à la fin de chaque ligne
$result=explode("<br />",$result); //on sépare chaque ligne
$regex2="#^\* \[\[[0-9]+\]\]#" ;
//on parcours se tableau
foreach($result as $ligne) {
if(preg_match($regex2,$ligne)) {
echo $ligne.'<br />';
}
}
merci d'avance
je ne veux pas conserver le back slash en fait. (comme tu avais marqué avant ça me semblait correct.
a coup sur c'est un problème d'encodage mais je ne sais pas trop où est exactement le problème.
Tu as regardé le fichier exploité ?
http://fr.wikipedia.org/w/index.php?title=1er_février&action=raw
merci d'avance
a coup sur c'est un problème d'encodage mais je ne sais pas trop où est exactement le problème.
Tu as regardé le fichier exploité ?
http://fr.wikipedia.org/w/index.php?title=1er_février&action=raw
merci d'avance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
please, donne une autre adresse que
http://fr.wikipedia.org/w/index.php?title=%s&action=raw
je n'obtiens que
#REDIRECT [[Wikipédia:Accueil principal]]
lorsque je clique sur ton lien ou le mets dans la barre d'adresse
http://fr.wikipedia.org/w/index.php?title=%s&action=raw
je n'obtiens que
#REDIRECT [[Wikipédia:Accueil principal]]
lorsque je clique sur ton lien ou le mets dans la barre d'adresse
a coup sur c'est un problème d'encodage mais je ne sais pas trop où est exactement le problème.
Si tu ne « sais pas trop où est exactement le problème. » ,
tu ne peux pas affirmer qu' « à coup sûr c'est un problème d'encodage »
Je ne vois pas pourquoi ce serait un problème d'encodage.
L'étoile * et les parenthéses droites [ et ] font partie de l'ASCII :
* code 42
{ code 91
] code 93
Ces caractères n'ont donc pas d'autres codes dans d'autres encodages.
Merci pour le lien. J'aurais dû mieux regarder, il est évident que %s est un machin de formatage.
Je vais regarder le problème tout de suite. Ça m'intrigue, la RE $regex2="#^\* \[\[[0-9]+\]\]#" qu'il y a dans ton code me paraît correcte.
Si tu ne « sais pas trop où est exactement le problème. » ,
tu ne peux pas affirmer qu' « à coup sûr c'est un problème d'encodage »
Je ne vois pas pourquoi ce serait un problème d'encodage.
L'étoile * et les parenthéses droites [ et ] font partie de l'ASCII :
* code 42
{ code 91
] code 93
Ces caractères n'ont donc pas d'autres codes dans d'autres encodages.
Merci pour le lien. J'aurais dû mieux regarder, il est évident que %s est un machin de formatage.
Je vais regarder le problème tout de suite. Ça m'intrigue, la RE $regex2="#^\* \[\[[0-9]+\]\]#" qu'il y a dans ton code me paraît correcte.
^ est une assertion qui n'est vraie que si elle est placée tout au début de la chaîne
(...)
La signification de ^ peut changer, de manière à l'amener à ce qu'il puisse se trouver immédiatement avant et immédiatement après un caractère de nouvelle ligne "\n". Cela se fait en ajoutant l'option PCRE_MULTILINE au moment de la compilation ou de l'exécution.
https://www.php.net/manual/fr/regexp.reference.anchors.php
(...)
La signification de ^ peut changer, de manière à l'amener à ce qu'il puisse se trouver immédiatement avant et immédiatement après un caractère de nouvelle ligne "\n". Cela se fait en ajoutant l'option PCRE_MULTILINE au moment de la compilation ou de l'exécution.
https://www.php.net/manual/fr/regexp.reference.anchors.php
Warning: preg_match() [function.preg-match]: No ending delimiter '^'