| Trouver une chaine dans une "sous-regexp" ? |
|
 |
|
 |
|
 |
|
 |
Group: fr.comp.lang.perl · Group Profile
Author: t0rt0iset0rt0ise Date: Mar 31, 2008 09:56
Salut,
Je suis un peu perdu, j'ai pas vraiment d'idee comment resoudre un
petit probleme que l'on m'a pose.
Alors si quelqu'un veux bien me donner quelques conseils utiles...
Voila, je dois implementer une fonction qui prends deux parametres une
"courte" chaine de caractere et une regexp.
Elle doit rendre TRUE si la chaine ("courte") est valable dans uen
sous partie de la regexp.
par exemple:
si ma regexp c'est \dtoit\d et que ma chaine est "5t" ou "oi" ou
"it6"c OK sinon 33 ne marche pas...
Bon j'ai ecrit un petit truc mais je sais que c'est pas ca...
$regexp = shift or die;
$str1 = shift or die;
@arr = split ("", $regexp);
for ($i=0;$i<=($#arr-1);$i++) {
for ($j=$i;$j<=$#arr;$j++) {
$res = '';
for ($k=$i;$k<=$j;$k++) {
$res .= $arr[$k];
}
if (eval {$str1 =~ m/^$res$/}) {
print "YES!\n";
exit 0;
}
}
}
print "NO!\n";
exit 1;
Je vois deux "options algorithmique" un peu plus avancees:
1. Decomposer la regexp en 2 et faire un appel recursif (la coupure en
2 morceaux glissant le long de la regexp via une boucle)
2. rechercher dans la regexp la ou le premier caractere de la chaine
courte correspond et continuer la verification de la chaine courte sur
la regexp a partir de cette position.
J'avoue que je suis un peu dans le brouillard,
Merci pour votre aide !
t0rt0ise
|