expression reguliere d'un url
16 messages
• Page 1 sur 2 • 1, 2
Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics
- comme0
- Nouveau WRInaute

- Messages: 9
- Inscription: 27 Mai 2008
expression reguliere d'un url
bonjour tout le monde,
je suis actuellement entraine de programmé en perl, c'est la première fois et j'ai un problème pour l'expression régulière d'un url que je dois aller et récupérer des ids. voici l'url : href="resumeSearchResults.cfm?pageAction=viewResumeSearchResult&resumeId=757663" , le numero de la fin (id) varie et voici ce que j'ai fait qui fonctionne pas.
while($Fichier=readdir(DIR)) {
if(($Fichier ne ".") && ($Fichier ne "..")){
if($fichier=~ "#^(((?:http[s]?)://)?(?(2)(www\.)?|(www\.){1})([-a-z0-9_]{2,}\.[-a-z0-9.]{2,}[-a-z0-9\/&\?=.]{2,})$#i\)"){
$Fichier= "/var/www/html/firstpage/".$Fichier;
open(LOG, "$Fichier") or die(" pb avec $Fichier : $!\n");
while(my $ligne = <LOG>) {
chomp($ligne);
if($ligne= ^href="\resumeSearchResults\.cfm\?pageAction&.*resumeId=(\d+)/$#i"){
print ECRIRE $1."#";
$l++;
}
}
}
}
}
merci de bien vouloir m'aider.
je suis actuellement entraine de programmé en perl, c'est la première fois et j'ai un problème pour l'expression régulière d'un url que je dois aller et récupérer des ids. voici l'url : href="resumeSearchResults.cfm?pageAction=viewResumeSearchResult&resumeId=757663" , le numero de la fin (id) varie et voici ce que j'ai fait qui fonctionne pas.
while($Fichier=readdir(DIR)) {
if(($Fichier ne ".") && ($Fichier ne "..")){
if($fichier=~ "#^(((?:http[s]?)://)?(?(2)(www\.)?|(www\.){1})([-a-z0-9_]{2,}\.[-a-z0-9.]{2,}[-a-z0-9\/&\?=.]{2,})$#i\)"){
$Fichier= "/var/www/html/firstpage/".$Fichier;
open(LOG, "$Fichier") or die(" pb avec $Fichier : $!\n");
while(my $ligne = <LOG>) {
chomp($ligne);
if($ligne= ^href="\resumeSearchResults\.cfm\?pageAction&.*resumeId=(\d+)/$#i"){
print ECRIRE $1."#";
$l++;
}
}
}
}
}
merci de bien vouloir m'aider.
- jcaron
- WRInaute accro

- Messages: 2678
- Inscription: 13 Fév 2004
Re: expression reguliere d'un url
comme0 a écrit:while($Fichier=readdir(DIR)) {
if(($Fichier ne ".") && ($Fichier ne "..")){
Tu ferais mieux de faire un next if $Fichier =~ /^./; ça simplifie la lecture...
comme0 a écrit:if($fichier=~ "#^(((?:http[s]?)://)?(?(2)(www\.)?|(www\.){1})([-a-z0-9_]{2,}\.[-a-z0-9.]{2,}[-a-z0-9\/&\?=.]{2,})$#i\)"){
Là tu compares le nom du fichier (et non son contenu) avec ta regex de la mort qui tue. En plus je ne suis pas vraiment convaincu qu'elle soit très juste, et au minimum il y a beaucoup de choses superflues dedans. Mais que cherches-tu réellement à faire avec?
comme0 a écrit:
$Fichier= "/var/www/html/firstpage/".$Fichier;
open(LOG, "$Fichier") or die(" pb avec $Fichier : $!\n");
while(my $ligne = <LOG>) {
chomp($ligne);
if($ligne= ^href="\resumeSearchResults\.cfm\?pageAction&.*resumeId=(\d+)/$#i"){
- ça doit même pas compiler, ça, si? $ligne =~ /ta-regex/ ça devrait déjà mieux marcher...
- le href=... se situe vraiment en tout début de ligne?
- à quoi sert le \ dans href="\?
- la fin de ta "regex" me laisse perplexe... je pense que tu voulais dire "$/i mais je n'en suis pas convaincu. Et ça impliquerait qu'on passe à la ligne juste après cet attribut...
comme0 a écrit:merci de bien vouloir m'aider.
perldoc perlre
Jacques.
- comme0
- Nouveau WRInaute

- Messages: 9
- Inscription: 27 Mai 2008
en fait c'est la premiere fois que je fais j'ai beaucoup lu et voila ce que j'ai pu ecrire,
ce que je veux n'est rien de particulier qu'aller dans ce url: href="resumeSearchResults.cfm?pageAction=viewResumeSearchResult&resumeId=757663 et recuperer le nonbre 757663 qui varier pour le mettre dans fichier où je peux l'exploiter après.
alors vous pouvez me suggerer une solution.
merci
ce que je veux n'est rien de particulier qu'aller dans ce url: href="resumeSearchResults.cfm?pageAction=viewResumeSearchResult&resumeId=757663 et recuperer le nonbre 757663 qui varier pour le mettre dans fichier où je peux l'exploiter après.
alors vous pouvez me suggerer une solution.
merci
- jcaron
- WRInaute accro

- Messages: 2678
- Inscription: 13 Fév 2004
comme0 a écrit:en fait c'est la premiere fois que je fais j'ai beaucoup lu et voila ce que j'ai pu ecrire,
ce que je veux n'est rien de particulier qu'aller dans ce url: href="resumeSearchResults.cfm?pageAction=viewResumeSearchResult&resumeId=757663 et recuperer le nonbre 757663 qui varier pour le mettre dans fichier où je peux l'exploiter après.
alors vous pouvez me suggerer une solution.
merci
- Code: Tout sélectionner
open my $fh,"$filename" or die "can't open $filename";
while (<$fh>)
{
if (/href="resumeSearchResults\.cfm\?pageAction=viewResumeSearchResult&resumeId=(\d+)"/)
{
print "$1\n";
}
}
Non?
Jacques.
- comme0
- Nouveau WRInaute

- Messages: 9
- Inscription: 27 Mai 2008
j'ai fait ça maintenant
if($Fichier=~ m/html/i){
open(LOG, "$Fichier") or die(" pb avec $Fichier : $!\n");
while(my $ligne = <LOG>) {
chomp($ligne);
if($ligne=~ m/href="resumeSearchResults.cfm\?pageAction&.*resumeId=(\d+)\"/i){
print ECRIRE $1."#";
$l++;
}
}
}
mais toujour rien
if($Fichier=~ m/html/i){
open(LOG, "$Fichier") or die(" pb avec $Fichier : $!\n");
while(my $ligne = <LOG>) {
chomp($ligne);
if($ligne=~ m/href="resumeSearchResults.cfm\?pageAction&.*resumeId=(\d+)\"/i){
print ECRIRE $1."#";
$l++;
}
}
}
mais toujour rien
- jcaron
- WRInaute accro

- Messages: 2678
- Inscription: 13 Fév 2004
comme0 a écrit:j'ai fait ça maintenant
if($Fichier=~ m/html/i){
open(LOG, "$Fichier") or die(" pb avec $Fichier : $!\n");
while(my $ligne = <LOG>) {
chomp($ligne);
if($ligne=~ m/href="resumeSearchResults.cfm\?pageAction&.*resumeId=(\d+)"/i){
print ECRIRE $1."#";
$l++;
}
}
}
mais toujour rien
1. "rien", ce n'est pas très précis... Il y a des erreurs, des warnings? Ajoute "use strict; use warnings" au début de ton programme, ça permettra d'en savoir plus.
2. Je suppose que le fh "ECRIRE" existe, et que tu as ouvert le fichier correspondant en écriture, que tu as vérifié qu'il l'ouvrait bien, et que tu as vérifié ce qu'il contenait à la fin?
Jacques.
- comme0
- Nouveau WRInaute

- Messages: 9
- Inscription: 27 Mai 2008
voici au complet mon script:
#!/usr/local/bin/perl
use Switch;
open(ECRIRE,">//var/www/html/comme/les_ids/mesIds")or die ("Erreur de creation de ids") ;
$dir = "/var/www/html/firstpage/";
$k=0;
$l=0;
opendir(DIR, $dir) || print "Repertoire $dir introuvable:$!\n";
while($Fichier=readdir(DIR)) {
if(($Fichier ne ".") && ($Fichier ne "..")){
if($Fichier=~ m/html/i){
$Fichier= "/var/www/html/firstpage/".$Fichier;
open(LOG, "$Fichier") or die(" pb avec $Fichier : $!\n");
while(my $ligne = <LOG>) {
chomp($ligne);
if($ligne=~ m/href="resumeSearchResults.cfm\?pageAction&.*resumeId=(\d+)\"/i){
print ECRIRE $1."#";
$l++;
}
}
}
}
}
closedir(DIR);
close(ECRIRE);
$chaine="";
$chaineold="";
$oldvar="";
open(ECRIRE2,">/var/www/html/comme/les_ids/mesIdsFinal")or die ("Erreur de creation de creation \n") ;
open(LOG2, "/var/www/html/comme/les_ids/mesIds") or die(" pb avec : $!\n");
open(LOG3, "/var/www/html/comme/les_ids/mesIdsFinalOLD") or die(" pb avec : $!\n");
while(my $ligne = <LOG2>) {
chomp($ligne);
$chaine=$chaine."#".$ligne;
}
while(my $ligne = <LOG3>) {
chomp($ligne);
$chaine3=$chaine3."#".$ligne;
}
@Myliste = split(/#/, $chaine);
@Myliste = sort @Myliste;
foreach $var (@Myliste){
if($var ne $oldvar && !($chaine3 =~ m/#$var#/i)){ $oldvar=$var;print ECRIRE2 $var."#";$k++;}
}
close(LOG2);
close(ECRIRE2);
print $l.":".$k;
merci pour tes efforts
#!/usr/local/bin/perl
use Switch;
open(ECRIRE,">//var/www/html/comme/les_ids/mesIds")or die ("Erreur de creation de ids") ;
$dir = "/var/www/html/firstpage/";
$k=0;
$l=0;
opendir(DIR, $dir) || print "Repertoire $dir introuvable:$!\n";
while($Fichier=readdir(DIR)) {
if(($Fichier ne ".") && ($Fichier ne "..")){
if($Fichier=~ m/html/i){
$Fichier= "/var/www/html/firstpage/".$Fichier;
open(LOG, "$Fichier") or die(" pb avec $Fichier : $!\n");
while(my $ligne = <LOG>) {
chomp($ligne);
if($ligne=~ m/href="resumeSearchResults.cfm\?pageAction&.*resumeId=(\d+)\"/i){
print ECRIRE $1."#";
$l++;
}
}
}
}
}
closedir(DIR);
close(ECRIRE);
$chaine="";
$chaineold="";
$oldvar="";
open(ECRIRE2,">/var/www/html/comme/les_ids/mesIdsFinal")or die ("Erreur de creation de creation \n") ;
open(LOG2, "/var/www/html/comme/les_ids/mesIds") or die(" pb avec : $!\n");
open(LOG3, "/var/www/html/comme/les_ids/mesIdsFinalOLD") or die(" pb avec : $!\n");
while(my $ligne = <LOG2>) {
chomp($ligne);
$chaine=$chaine."#".$ligne;
}
while(my $ligne = <LOG3>) {
chomp($ligne);
$chaine3=$chaine3."#".$ligne;
}
@Myliste = split(/#/, $chaine);
@Myliste = sort @Myliste;
foreach $var (@Myliste){
if($var ne $oldvar && !($chaine3 =~ m/#$var#/i)){ $oldvar=$var;print ECRIRE2 $var."#";$k++;}
}
close(LOG2);
close(ECRIRE2);
print $l.":".$k;
merci pour tes efforts
- jcaron
- WRInaute accro

- Messages: 2678
- Inscription: 13 Fév 2004
Eh, il n'y a pas marqué "on écrit tes scripts à ta place" ici, hein...
Si ton script il ne marche pas, ben tu débuggues. Tu commences par mettre les "use strict; use warnings;" dont je t'ai parlé, et tu ajoutes des traces pour voir ce qu'il fait, et tu vas finir par trouver ce qui ne marche pas.
Ceci dit, un petit indice, "print" ne rajoute pas de retour à la ligne spontanément, et pense à regarder ce qu'il y a dans tes fichiers intermédiaires pour voir...
Jacques.
Si ton script il ne marche pas, ben tu débuggues. Tu commences par mettre les "use strict; use warnings;" dont je t'ai parlé, et tu ajoutes des traces pour voir ce qu'il fait, et tu vas finir par trouver ce qui ne marche pas.
Ceci dit, un petit indice, "print" ne rajoute pas de retour à la ligne spontanément, et pense à regarder ce qu'il y a dans tes fichiers intermédiaires pour voir...
Jacques.
- jcaron
- WRInaute accro

- Messages: 2678
- Inscription: 13 Fév 2004
comme0 a écrit:dsl pour le derangement mais j'ai un probleme avec le Strict et warnings; en je reçoi un message d'erreur qui me dit:
Can't locate Strict.pm in @INC (@INC contains: /usr/lib/perl5/5.8.5/i386-linux-thread-multi
encore merci.
Pas de majuscule à "strict".
Jacques.
- comme0
- Nouveau WRInaute

- Messages: 9
- Inscription: 27 Mai 2008
il ne m'indique pas où il y a les erreurs mais il m'affiche message de ce genre:
Global symbol "$ dir" exige explicitement le nom du paquet à indexcandidats.pl ligne 7. et c'est pour toutes les variables que j'ai utilisé.
et à la fin il me dit la compilation a été avorté en raison des erreurs de compilation.
puis-je avoir plus detaille si c'est possible.
merci
Global symbol "$ dir" exige explicitement le nom du paquet à indexcandidats.pl ligne 7. et c'est pour toutes les variables que j'ai utilisé.
et à la fin il me dit la compilation a été avorté en raison des erreurs de compilation.
puis-je avoir plus detaille si c'est possible.
merci
- jcaron
- WRInaute accro

- Messages: 2678
- Inscription: 13 Fév 2004
comme0 a écrit:il ne m'indique pas où il y a les erreurs mais il m'affiche message de ce genre:
Global symbol "$ dir" exige explicitement le nom du paquet à indexcandidats.pl ligne 7. et c'est pour toutes les variables que j'ai utilisé.
et à la fin il me dit la compilation a été avorté en raison des erreurs de compilation.
puis-je avoir plus detaille si c'est possible.
merci
Il faut que tu déclares tes variables avant de les utiliser: my $dir; par exemple...
Jacques.
- comme0
- Nouveau WRInaute

- Messages: 9
- Inscription: 27 Mai 2008
apres bcp des modif je pense que mon script devrais marcher, mais j'ai un souci c'est que l'url que j'ai ecrit je pense que c'est pas bon. voila l'url que je veux utiliser
href="resumeSearchResults.cfm?pageAction=viewResumeSearchResult&resumeId=757663"
voici ce que j'ai ecrit:
if($ligne=~ m/"href=resumeSearchResults.cfm\?pageAction&.*resumeId=(\d+)\"/i)
j'aimerai bien si c'est possible une proposition,
merci.
href="resumeSearchResults.cfm?pageAction=viewResumeSearchResult&resumeId=757663"
voici ce que j'ai ecrit:
if($ligne=~ m/"href=resumeSearchResults.cfm\?pageAction&.*resumeId=(\d+)\"/i)
j'aimerai bien si c'est possible une proposition,
merci.
- jcaron
- WRInaute accro

- Messages: 2678
- Inscription: 13 Fév 2004
comme0 a écrit:apres bcp des modif je pense que mon script devrais marcher, mais j'ai un souci c'est que l'url que j'ai ecrit je pense que c'est pas bon. voila l'url que je veux utiliser
href="resumeSearchResults.cfm?pageAction=viewResumeSearchResult&resumeId=757663"
voici ce que j'ai ecrit:
if($ligne=~ m/"href=resumeSearchResults.cfm\?pageAction&.*resumeId=(\d+)"/i)
j'aimerai bien si c'est possible une proposition,
merci.
ben si tu ne mets pas le " au même endroit que tu le cherches, forcément, ça ne peut pas marcher. Sinon pas besoin d'escaper le deuxième ". Bref:
- Code: Tout sélectionner
if($ligne =~ m/href="resumeSearchResults.cfm\?pageAction&.*resumeId=(\d+)"/i)
Jacques.
16 messages
• Page 1 sur 2 • 1, 2
Formation recommandée sur ce thème :
Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- re expression régulière...
- Expression régulière
- expression réguliere!please help!!!
- Expression régulière simple
- soucis expression reguliere
- expression régulière en javascript
- problème expression régulière
- RedirectMatch et expression régulière
- Expression Régulière Malformée ?
- Expression régulière et redirect
- Sandbox, blacklistage et autres pénalités de Google - 16-03-2005
- Nouvelle étude de WebRankInfo : les mots-clés et le référencement - 04-01-2003
- La calculatrice Google - 12-09-2003
- Impact du PageRank dans le positionnement Google - 18-04-2005
- Google Suggest API - 17-08-2006
- Google News : trucs et astuces - 13-01-2005
- Les bonnes stratégies de mots-clés pour le référencement - 04-08-2008
- Google Trends - 13-05-2006
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
