Perl regex Hexa Utf8
Résolu
dmganges
Messages postés
150
Date d'inscription
Statut
Membre
Dernière intervention
-
dmganges Messages postés 150 Date d'inscription Statut Membre Dernière intervention -
dmganges Messages postés 150 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je ne trouve pas comment représenter un caractère quelconque dans une regex exprimée en hexa sur 2 octets.
Je désire supprimer 1 caractère C précédé de 4 caractères ABxx dont seul les 2 premiers sont connus, et en conservant le reste, bien sûr.
ABxxC... --> ABxx...
Intuitivement ça pourrait avoir cette forme :
Sauf que mon intuition est fausse bien sûr, la notation (.) est fausse !
Merci d'avance pour votre aide !
Je ne trouve pas comment représenter un caractère quelconque dans une regex exprimée en hexa sur 2 octets.
Je désire supprimer 1 caractère C précédé de 4 caractères ABxx dont seul les 2 premiers sont connus, et en conservant le reste, bien sûr.
ABxxC... --> ABxx...
Intuitivement ça pourrait avoir cette forme :
$Lig =~ s/\x{0627}\x{0644}(.)(.)\x{0651}/\x{0627}\x{0644}(.)(.)/g;
Sauf que mon intuition est fausse bien sûr, la notation (.) est fausse !
Merci d'avance pour votre aide !
A voir également:
- Perl regex Hexa Utf8
- Editeur hexa - Télécharger - Édition & Programmation
- Denon perl pro test - Accueil - Audio
- Json_encode utf8 ✓ - Forum PHP
- Table ascii hexa - Guide
- C hexa - Forum C
3 réponses
Salut,
les références arrière ?
A+ blux
les références arrière ?
$Lig =~ s/\x{0627}\x{0644}(.)(.)\x{0651}/\x{0627}\x{0644}(\3)(\4)/g;ou même
$Lig =~ s/\x{0627}\x{0644}(.)(.)\x{0651}/(\1)(\2)(\3)(\4)/g;Non testé, donc SGDG ;-)
A+ blux
"Les cons, ça ose tout. C'est même à ça qu'on les reconnait"
D'abord MERCI blux, zipe31 & lami20j ( je ne doute pas...) !!!
de vous intéresser à mon pb, tout con (je suis découvert [blux] :-)))
Pardon zipe31 pour le mauvais choix de forum, et merci pour le transfert !
Voici ce que me retourne :
$Lig =~ s/\x{0627}\x{0644}(.)(.)\x{0651}/(\1)(\2)(\3)(\4)/g;
C:\Arabe>perl ess.pl
\1 better written as $1 at ess.pl line 1892.
\2 better written as $2 at ess.pl line 1892.
\3 better written as $3 at ess.pl line 1892.
\4 better written as $4 at ess.pl line 1892.
Use of uninitialized value $3 in concatenation (.) or string at ess.pl line 1892
, <$fh> line 1.
Use of uninitialized value $4 in concatenation (.) or string at ess.pl line 1892
, <$fh> line 1.
Et dans le scrolled-text d'exécution :
http://cjoint.com/?BFnnJZ0CXui
Voici ce que me retourne :
$Lig =~ s/\x{0627}\x{0644}(.)(.)\x{0651}/\x{0627}\x{0644}(\3)(\4)/g;
C:\Arabe>perl ess.pl
\3 better written as $3 at ess.pl line 1892.
\4 better written as $4 at ess.pl line 1892.
et dans le scrolled-text d'éxécution :
http://cjoint.com/?BFnnKMx4ogM
A titre info je n'ai pas de pb sur des transformations simples :
Encore MERCI !
de vous intéresser à mon pb, tout con (je suis découvert [blux] :-)))
Pardon zipe31 pour le mauvais choix de forum, et merci pour le transfert !
Voici ce que me retourne :
$Lig =~ s/\x{0627}\x{0644}(.)(.)\x{0651}/(\1)(\2)(\3)(\4)/g;
C:\Arabe>perl ess.pl
\1 better written as $1 at ess.pl line 1892.
\2 better written as $2 at ess.pl line 1892.
\3 better written as $3 at ess.pl line 1892.
\4 better written as $4 at ess.pl line 1892.
Use of uninitialized value $3 in concatenation (.) or string at ess.pl line 1892
, <$fh> line 1.
Use of uninitialized value $4 in concatenation (.) or string at ess.pl line 1892
, <$fh> line 1.
Et dans le scrolled-text d'exécution :
http://cjoint.com/?BFnnJZ0CXui
Voici ce que me retourne :
$Lig =~ s/\x{0627}\x{0644}(.)(.)\x{0651}/\x{0627}\x{0644}(\3)(\4)/g;
C:\Arabe>perl ess.pl
\3 better written as $3 at ess.pl line 1892.
\4 better written as $4 at ess.pl line 1892.
et dans le scrolled-text d'éxécution :
http://cjoint.com/?BFnnKMx4ogM
A titre info je n'ai pas de pb sur des transformations simples :
# Suppresion des voyelles courtes suivies de voyelles longues if ( $config{DEFAUT}{dia_2} == 1 ) { $Lig =~ s/\x{064E}\x{0627}/\x{0627}/go; # Supprime Fatha devant Alif ? $Lig =~ s/\x{064E}\x{0649}/\x{0649}/go; # Supprime Fatha devant Alif marsour ? $Lig =~ s/\x{0650}\x{064A}/\x{064A}/go; # Supprime Kasra devant Ya ? $Lig =~ s/\x{064F}\x{0648}/\x{0648}/go; # Supprime Damma devant Oua ? return $Lig; }
Encore MERCI !
Pardon !
Non ça ne marche pas,
à l'exécution (lien vers ci-joint.com) non traduits ici :
ça intercale des ( ) ....
Non ça ne marche pas,
à l'exécution (lien vers ci-joint.com) non traduits ici :
ça intercale des ( ) ....
STOP !!!!
RÉSOLU !!!!
blux :
$Lig =~ s/\x{0627}\x{0644}(.)(.)\x{0651}/\x{0627}\x{0644}$1$2/g;
OK :
https://www.cjoint.com/?BFno3gLpCe7
J'avais laissé les parenthèses ($1) ($2)
D'autre part }$1$2
doivent être accolés sinon ajout d'espace dans la chaîne
Une super grand MERCI blux, zipe31...
RÉSOLU !!!!
blux :
$Lig =~ s/\x{0627}\x{0644}(.)(.)\x{0651}/\x{0627}\x{0644}$1$2/g;
OK :
https://www.cjoint.com/?BFno3gLpCe7
J'avais laissé les parenthèses ($1) ($2)
D'autre part }$1$2
doivent être accolés sinon ajout d'espace dans la chaîne
Une super grand MERCI blux, zipe31...
On ne peut pas regrouper le tout en une seule ?
Du style :
J'ai juste un doute sur les références arrières où je les vois affichées tantôt avec un $n, tantôt avec un \n...
Mais j'émets aussi des réserves sur ma conclusion ;-))
lami20j au secours ;-)))