Comme je vous l'ai dit, idéalement il faudrait analyser un peut plus les cas qui peuvent poser problème !!!
Ceci dit, pour les cas que vous présentez, voici quelque chose qui fonctionne :
Pour le cas [FC, 0A] :
Code : Tout sélectionner
$chaine = "0x000000FCDEBUT***************FIN0A2000C3"
$resul = StringRegExp($chaine, "(?i)(.*FC)(.*)(0A.*)", 1)
MsgBox(0, "", $resul[1]
Pour le cas [FF, 0A] :
Code : Tout sélectionner
$chaine = "FFFFFF44424144FF5445535420310A4241440A4241440A424144"
$resul = StringRegExp($chaine, "(?i)(.*FF)(.*)(0A.*)", 1)
MsgBox(0, "", $resul[1])
Techniquement, le motif de l'expression régulière
(?i)(.*FF)(.*)(0A.*)
permet de décomposer la chaine traitée en trois groupes comme ceci :
Groupe 1 : (.*FF) = Tous les caractères de gauche, jusqu'au dernier FF trouvé (sous entendu avant le premier 0A grâce au groupe 3)
Groupe 2 : (.*) = Tous ce qui ce trouve entre le groupe 1 et le groupe 2
Groupe 3 : (0A.*) = Le premier 0A trouvé (sous entendu après groupe 1 et 2) + tous les caractères jusqu'a la fin de la chaîne.
Vu que vous travaillez sur des chaines hexadécimale, la gestion de la casse n'est pas nécessaire et comme je suppose que vous vous moquez de récupérer le début et la fin de la chaîne, du coup, vous pouvez simplifier à :
Code : Tout sélectionner
$chaine = "FFFFFF44424144FF5445535420310A4241440A4241440A424144"
$resul = StringRegExp($chaine, ".*FF(.*)0A.*", 1)
MsgBox(0, "", $resul[0])
Ou si vous tenez absolument au StringRegExpReplace :