1) pourrait utiliser quelques exemples de ce que vous êtes en train d'analyser.
2) si l'utilisation de l'utilisation « x » à la fin de l'expression, vous pouvez mettre l'espace blanc et commentaires dans l'expression régulière pour le rendre plus compréhensible
3) En outre, en brisant vers le bas, vous ll remarquera que la deuxième partie du contenu à l'intérieur de() manquait le match pour les nombres ... au lieu de chercher 0 ou plus '_', et se brisant quand il voyait les nombres, donc ne correspondant pas.
while(<TOCFILE>)
{
$toc_line = $_;
$toc_line =~
s/ # replace the follwoing
<inlineFig # match this text
.*? # then any characters until the next sequence matches
( # throw the match into $1
\.\.\/pics\/ch09_inline99_ # ..\pics\cho9_inline99_
\d*?\.jpg # folowed by 0 or more numbers
)*? # keeping doing that until the next sequence matches
<\/inlineFig> # match this text
/ # with the follwoing
<img src="${1}" alt="" \/\> # some text and the result of $1 above.
/xg; # <- the x makes it ignore whitespace and #comments
$new_toc_file .= $toc_line;
}
4) comme mentionné,() *? retourne seulement le dernier match dans $ 1, mais cela ne devrait pas être un problème si votre entrée ne va avoir qu'un certain format.
En effet. Presque chaque fois que j'ai ce problème, c'est un problème avec mon modèle. –