expression rationelle [Perl] - Programmation
Marsh Posté le 31-05-2001 à 11:45:27
extrait de la doc php :
Citation : |
Marsh Posté le 31-05-2001 à 19:37:58
minusplus> La question posée concerne Perl, pas PHP...
Nicolas> Désolé, je n'ai pas la réponse... mais celle-ci m'intéresse !
Marsh Posté le 31-05-2001 à 21:25:56
mais c'est pareil ! les expressions régulières PERL ont été implémentées dans PHP (librairie pcre). je suis allé là passke j'ai plus l'habitude de la doc PHP que de la doc Perl....
son problème n'est qu'une question de regex, donc qu'elle soit évaluée en PHP, C ou Perl, c'est porail !
toi même !
http://fr.php.net/manual/fr/ref.pcre.php
Marsh Posté le 31-05-2001 à 22:33:56
Je connait déjà la documentation Perl et je l'ai déjà consulté. Les informations que tu as éditées étaient déjà incluses dans l'expression.
Ma question est la suivante :
Comment tester un nombre indéfini d'espaces AVANT tel expression ? La doc le précise, il faut toujours un nombre défini.
Ainsi (?<!texte) texte peut contenir 'a' mais pas 'a+'
Comment faire ?
Marsh Posté le 01-06-2001 à 04:15:39
>Comment tester un nombre indéfini d'espaces AVANT tel expression ?
j'utiliserais ([ ]*) ou bien ([ \t\n]*)
a priori (avec ou sans parenthese autour selon ce que tu veux matcher.
A+,
Marsh Posté le 01-06-2001 à 10:00:46
gilou > ben ça va être refusé en tant qu'assertion, c'est pas de longueur fixe !
nicolas > j'ai pas compris le coup des informations incluses... ?
sinon, en effet, j'avais mal lu ton post (enfin disons trop vite..). Ben heuu... avec des masques conditionnels ?
en matchant un <A HREF=" et en mettant une condition dessus aprés... ? (je suis trés loin d'être un pro des regexp...)
Citation : Les sous-masques conditionnels |
Marsh Posté le 30-05-2001 à 22:50:51
Bonjour,
Je voudrais faire en sorte qu'une adresse commençant par http:// ou ftp://
soit transformé en lien.
J'ai donc fait ceci :
$texte =~ s@(?<!(?:"|'))(http|https|ftp)://([[:alnum:]/\n+-=%&:_.~?]+[#[:alnum:]+]*)@<a
href="$1://$2" target="_blank\">$1://$2</a>@i;
Le problème, c'est que si le texte en question était :
<A HREF="http://www.perl.com"> Cliquez ici </A>
Alors il devient quelque chose du genre :
<A HREF="<A HREF="http://www.perl.com">" etc..
Pouvez m'aider ? Il faudrait détecter si le texte n'est pas précédé par un
<A HREF=' ou un <A HREF=" sans compter les espaces qui peuvent se glisser
entre le lien URL et le guillemet. Pour les guillemets, j'y arrive, mais pour les espaces éventuels qui peuvent s'y glisser, c'est plus dur :
<A HRRF=" http://www.machin.com "> par exemple poserait problème.
Merci
Merci beaucoup !