Bonjour à tous,
Débutant en Perl, je rencontre un soucis lors de l'évaluation d'une expression régulière avec des caractères chinois. J'ouvre bien le fichier en UTF-8, mais je rencontre le message suivant lors de l'exécution du script :
panic: reg_node overrun trying to emit 63.
Après quelques recherches, je n'arrive pas à comprendre le sens du message d'erreur. Et après quelques tests appronfondis, j'arrive à des trucs complètement bizarre :
Mon fichier contient la ligne suivante :
<tr><td class="fins_title1"><B>Address</B></td><td class="fins_title2">山东省枣庄市邳庄村#(ShanDongShengZaoZhuangShiZuoZhuangCun)</td></tr>
Et il me faut extraire l'adresse en Chinois et celle en Pinyin. J'utilise pour ça un regex :
/<td class="fins_title2">(\p{Han}+)#\(([ a-z]+)\)<\/td>/i
C'est là que j'obtiens l'erreur.
Maintenant, en simplifiant la regex :
1 2 3 4
| /<td class="fins_title2">(\p{Han}+)/i => Même erreur
/ss="fins_title2">(\p{Han}+)/i => Même erreur
/s="fins_title2">(\p{Han}+)/i => OK (??????? pourquoi ?????)
/ss="fins_title2">(.+)/i => OK (A cause des charactères chinois qui passent pas ?????) |
Bref, je trouve que c'est assez du délire, et je comprends vraiment rien à l'histoire...
Merci d'avance pour votre aide.
Partager