Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

[PERL]Récupération chaîne caractère...

Zep3k!GnO, le jeudi 10 novembre 2005 à 10:18:13
Bonjour à tous . . . :D
voilà j'expose direct le problème :
j'ai un fichier avec a plusieurs endroit :
coucou@art[L. 125-65]blablablahh
coucou@art[L. 15-5-3]blablablahh
et autres du genre...


et ce que je veux fair c'est prendre ce qui est en gras afin de supprimmer de cette chaine tout caractère qui n'est pas un chiffre ni une lettre ni un '-' .
Bref mon soucis est que je vois pas comment faire pour récupérer ce qui est en gras dans une variable afin de le traiter avec une expression régulière et de le replacer dans mon fichier . . .

Donc si quelqu'un sait , MERCI de m'dire comment qu'on fait :D

Zep3k!GnO
-->kurtis jackson:"Dans la vie tu as besoin de 3 choses : le fitness, l'aérobic et moi."
Répondre à Zep3k!GnO  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Zep3k!GnO, le jeudi 10 novembre 2005 à 10:49:27
j'ai déjà trouvé ça :
while ($ligne = <>) 
{
	if($ligne=~m/@art\[([^\]]+)\]/)			#si je trouve @art[contenu] dans ma ligne.je traite le contenu
	{
			$inter=$1;                                 #POUR les tests
			$ligne="+$inter+ $ligne";   #POUR les tests
	}
		print ("$ligne");
	
}



Je trouve donc correctement les ligfnes ou mon occurence est présente mais le problème est qu'il y a des fois ou mon occurence est présente plusieurs fois dans la ligne . . . et avec ce script je trouve que la première occurence . . .
Voilà, j'attend xD une bonne âme ki m'aide . .

Zep3k!GnO
-->kurtis jackson:"Dans la vie tu as besoin de 3 choses : le fitness, l'aérobic et moi."
Répondre à Zep3k!GnO

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jisisv, le jeudi 10 novembre 2005 à 10:58:54
Utilise l'option 'g'
$st =~ m/modele/g;

Je regarderai ton problème en détail quand j'aurai un petit peu de temps...
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
Répondre à jisisv

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Zep3k!GnO, le jeudi 10 novembre 2005 à 11:20:51
Merci mais avec le g ça ne change rien . . .
j'obtient toujours en début de ligne sur mon document résultant mon
+monModele+ blahblahblah

et monModele vaut la valeur de la première occurence dans la ligne.

sinon je me dis qu'il est possible en PERl si je ne m'abuse de tout fair d'un coups genre :
s/Mon_modèle_de_recherche/traitement_du_modele/g;

avec dans la zone de traitement du modele, les fonctions pour supprimmer de monModele tout caractère qui n'est pas un chiffre ni une lettre ni un '-' .
ça serait plus facile mais moins lisible.. Mais tout ce que je veux c'est que mon fichier soit traité donc la lisibilité pour ce coups ci , vous imaginez ce que j'en fait ! hi hi hi

Zep3k!GnO
-->kurtis jackson:"Dans la vie tu as besoin de 3 choses : le fitness, l'aérobic et moi."
Répondre à Zep3k!GnO

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Zep3k!GnO, le jeudi 10 novembre 2005 à 13:36:49
Pour le moment j'ai un peu contourné le problème en bricolant mais si quelqu'un aune idée PROPRE, j'suis toujours à l'écoute.

Zep3k!GnO
-->kurtis jackson:"Dans la vie tu as besoin de 3 choses : le fitness, l'aérobic et moi."
Répondre à Zep3k!GnO

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Zep3k!GnO, le jeudi 10 novembre 2005 à 14:13:01
bah ca m'a pas l'air dégueux ce que j'ai fais, je vais rester dessus...
hé hé hé

Merci quand même :D

Zep3k!GnO
-->kurtis jackson:"Dans la vie tu as besoin de 3 choses : le fitness, l'aérobic et moi."
Répondre à Zep3k!GnO

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lami20j, le lundi 27 février 2006 à 20:51:19
Malgré 2005-11-10 10:18:13 (GMT+1) essaie ça
#! /usr/bin/perl

use warnings;

while (<>)
{
  s/(             # 1ere capture en $1
      \w+\@art    # coucou@art
      \[          # a partir de [
        (         # 2eme capture en $2
          [^\]]+
        )
      \]
    )
    /+$2+ $1/xg; #si je trouve @art[contenu] dans ma ligne.je traite le contenu
  print;
}
Répondre à lami20j

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lami20j, le lundi 27 février 2006 à 21:32:35
Re,

Quelque petits conseils :
1
$inter=$1;
$ligne="+$inter+ $ligne";

Pas besoin d'introduire la variable $inter, tu peux utiliser directement $1

Donc $ligne ="+$1+ $ligne";

2
Pas besoin d'utiliser des paranthèses pour afficher.
print ("$ligne");

Je trouve donc correctement les ligfnes ou mon occurence est présente mais le problème est qu'il y a des fois ou mon occurence est présente plusieurs fois dans la ligne . . . et avec ce script je trouve que la première occurence . . .

En fait il ne s'agit pas de ce que tu trouves mais plutôt de ce que tu affiches.

$ligne="+$inter+ $ligne";

Veut dire que chaque ligne est remplacée avec le contenu de $1 et la ligne.

Ex:
disons que le contenu soit +L. 125-65+
et pour les lignes on a

coucou@... et 2eme fois coucou@....

Le résultat sera
+L. 125-65+ coucou@... et 2eme fois coucou@....
même si tu trouves tous les occurences avec le modificateur /g

m//
Mais il ne faut pas oublier pas non plus que en contexte scalaire m//g indique une detection progressive et dans un contexte de liste m//g renvoie la liste de toutes les occurences.
if ( @val = $mot =~ /test/gi ) {# contexte liste
  printf "Test trouver de %d fois.\n",scalar @val;
}

=======================================
while ( $val =~ /t/gi ) { # contexte scalaire
  printf "t ou T dans la position %d.\n",pos($val) -1;
}

s///
Dans ce cas s///g actionne comme un recherch/remplecement global qui modifie tout d'un coup et il ne fait pas de détection progressive en contexte scalaire.
Répondre à lami20j

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 lami20j, le mardi 28 février 2006 à 07:22:22
Une autre possibilité c'est d'utiliser un test avant qui ne consomme pas de texte, comme ça tu ne fais q'une seule capture.
#! /usr/bin/perl

use warnings;

while (<>)
{
  s/\b(?=       # teste avant si on a
      \w+\@art  # coucou@art
      \[        # a partir de [
        (       # on capture ce que nous interesse dans $1
          [^\]]+
        )
      \]
    )\b
    /+$1+ /xg; # on ajoute $1 avant coucou @art[contenu] dans ma ligne
  print;
}
Répondre à lami20j

Résultats pour [PERL]Récupération chaîne caractère...

[perl] insérer des caractères dans une chaine (Résolu) Bonjour, J'essaie d'insérer des caractères dans une chaînes, en Perl. Ma chaine est par exemple : 12/1999-09/2002 et j'aimerais que cela me donne : 12/1999 à 09/2002 J'ai essayé avec tr mais je n'ai pu que remplacer le '... www.commentcamarche.net/forum/affich-2346709-perl-inserer-des-caracteres-dans-une-chaine
Diviser chaine caractere excel (Résolu) Bonjour, Je cherche une fonciton dans Excel qui me permet de diviser cette chaine caractere 27.03.2008 08:56:00; 03.04.2008 11:53:00; 10.04.2008 12:24:00 dans trois cellule différentes par exemple ici A1, A2, A3 A1= 27.03.2008 (ou A1= 27.03.2008... www.commentcamarche.net/forum/affich-6317967-diviser-chaine-caractere-excel
[C] concaténer chaine caractère avec double (Résolu) Bonjour, voila j'ai besoin de gérer un filtre qui ne comprend que des chaines de caractère et mon parametre qui vari est un nombre de type doube pour resoudre mon probleme il faut don que je concatene une chaine caractère constante avec ma... www.commentcamarche.net/forum/affich-6375401-c-concatener-chaine-caractere-avec-double

Résultats pour [PERL]Récupération chaîne caractère...

Sed - Introduction à SED - Part IISED - The Stream EDitor - Part II Ce document est une introduction à la pratique et à l'utilisation de l'éditeur de flux "SED", qui essaie de couvrir certaines fonctionnalités assez méconnues, pour ne pas dire "quasi inconnues", qui font de "SED"... www.commentcamarche.net/faq/sujet-9559-sed-introduction-a-sed-part-ii
Renommer plusieurs fichiers en batchLe fait de renommer un grand nombre de fichiers peut très vite devenir fastidieux. Heureusement, il existe des outils permettant d'automatiser cette tâche dans un grand nombre de cas : Fonctionnalités natives Utilisation d'un programme... www.commentcamarche.net/faq/sujet-2456-renommer-plusieurs-fichiers-en-batch
[PHP] Les ressemblances à ne pas confondreLes ressemblances à ne pas confondre Introduction Concatenation ou paramètres ? Guillemets/Apostrophe Structure require/include isset vs empty htmlentities ou htmlspecialchars ? Nombre de signes égal Introduction Cette astuce présente... www.commentcamarche.net/faq/sujet-4479-php-les-ressemblances-a-ne-pas-confondre

Résultats pour [PERL]Récupération chaîne caractère...

[Perl] Comparaison de caractères (Résolu)Bonjour à tous, j'ai un problème avec un script perl. Enfin lors d'une comparaison entre 2 chaines de caracteres visiblement identique, celle ci sont considérées comme étant différentes. Voici ma comparaison : $Compar = $BO{$cli}{$mod} cmp... www.commentcamarche.net/forum/affich-4088633-perl-comparaison-de-caracteres
[Perl] substitution chaîne de caractères (Résolu)Bonjour Débutant en Perl, je cherche à faire une substitution: J'ai une chaîne du type "donnee[xy][*view][0][*dei][0]" Je souhaite substituer la partie [*view][0] par [*view][$i], la valeur de $i étant évaluée dans mon programme. Qqn peut-il me... www.commentcamarche.net/forum/affich-2763389-perl-substitution-chaine-de-caracteres
[perl] inserer un caractere dans chaine (Résolu)Bonjour, je souhaiterai modifier une variable chaine de caractere qui donne l'heure. elle est pour l'instant de la forme : $heure = "1356Z" et je souhaite obtenir : $heure = "13h56" en ce qui concerne la suppression du "Z" final un chomp... www.commentcamarche.net/forum/affich-7324387-perl-inserer-un-caractere-dans-chaine

Résultats pour [PERL]Récupération chaîne caractère...

Les chaînes de caractères en C++Qu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une... www.commentcamarche.net/contents/cpp/cppstring.php3
Langage C - Les chaînes de caractèresQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne... www.commentcamarche.net/contents/c/cstring.php3
VBScript - Les fonctions de chaînes de caractèresLes fonctions de chaînes de caractères Fonction Description Filter(InputStrings, Value[, Include[, Compare]]) Sélectionne des chaînes de caractères parmi un tableau de chaînes... www.commentcamarche.net/contents/vbscript/vbs-fonctions-chaines-caracteres.php3