Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
1830 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  [LUA] - [RESOLU] - Regex - string.match() qui match à moitié...

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[LUA] - [RESOLU] - Regex - string.match() qui match à moitié...

n°2381331
spark
Un eclair dans la nuit
Posté le 09-04-2021 à 20:29:51  profilanswer
 

Hello !
 
Vu que je suis une burne en regex, je n'arrive pas à faire un truc tout con :
 
J'ai une chaine qui contient  
 
un code hexa suivi de CRLF suivi d'une chaine
 
je veux récupérer le code hexa, et la chaine
 

Code :
  1. -- chaine
  2. local txt = '50f\r\nCoucou\r\nComment ca va ?'
  3. -- recup
  4. hexa, reste = string.match(txt, '([^0-9A-Fa-f]+)\r?\n(.*)')
  5. -- debug
  6. print('hexa='..hexa)
  7. print('hexa byte='..string.byte(hexa))
  8. print('len hexa='..string.len(hexa))
  9. print('reste='..reste)
  10. print('len reste='..string.len(reste))


 
=> debug
 


hexa=  
hexa byte=13
len hexa=1
reste=Coucou Comment ca va ?
len reste=23


 
 
Pourquoi ([^0-9A-Fa-f]+) ne me retourne que "\n" ??
 
Merci de m'expliquer où je me foire :)
 
Ps: hexa peut faire 'n' caractères suivi de \r\n ou \n


Message édité par spark le 09-04-2021 à 20:49:02

---------------
Un cycle complet sera une série de 100.
mood
Publicité
Posté le 09-04-2021 à 20:29:51  profilanswer
 

n°2381332
rat de com​bat
attention rongeur méchant!
Posté le 09-04-2021 à 20:43:10  profilanswer
 

Connais pas LUA, mais en Perl le ^ inverse le contenu de [ ], autrement dit le regex sera vrai pour tout caractère NON contenu dans le [ ]. Tu voulais probablement mettre le ^ devant le [ ] ou il signifie début de chaîne?

n°2381334
spark
Un eclair dans la nuit
Posté le 09-04-2021 à 20:44:26  profilanswer
 

ca signifie le début de la chaine, et ca me retourne pas \n (10), mais \r (13)


---------------
Un cycle complet sera une série de 100.
n°2381336
rat de com​bat
attention rongeur méchant!
Posté le 09-04-2021 à 20:45:53  profilanswer
 

Oui, mais pas début de chaîne si on le place à l'intérieur d'un [ ] non?
 
Regarde bien:
 
^[a-f...]
[^a-f...]
 
Après je peux me tromper. :o

n°2381337
spark
Un eclair dans la nuit
Posté le 09-04-2021 à 20:46:03  profilanswer
 

ha ben non -_-'''
 

Code :
  1. hexa, reste = string.match(txt, '([0-9A-Fa-f]+)\r?\n(.*)')


 
hexa=50f
hexa byte=53
len hexa=3
reste=Coucou
Comment ca va ?
len reste=23
 


---------------
Un cycle complet sera une série de 100.
n°2381338
spark
Un eclair dans la nuit
Posté le 09-04-2021 à 20:47:10  profilanswer
 

hexa, reste = string.match(txt, '^([0-9A-Fa-f]+)\r?\n(.*)')
 
est la solution !
 
Merci bcp rat de combat !!!! :jap:


---------------
Un cycle complet sera une série de 100.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  [LUA] - [RESOLU] - Regex - string.match() qui match à moitié...

 

Sujets relatifs
[webservice] Envoyer string arrayPreg_match match mais ne capture pas
Cherche regex spécifique[PHP] Remplacer des mots dans une string par des valeurs d'un tableau
Aide RegEx pour extraire une sous chaine entre crochetstring literal contains an unescaped line break
Soucis Regex et string.search javascriptNettoyage HTML avec regex negative lookahead
REGEX besoin d'aide 
Plus de sujets relatifs à : [LUA] - [RESOLU] - Regex - string.match() qui match à moitié...


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR