|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jul 2005
Messaggi: 86
|
Aiuto con regular expression multiline
Ciao a tutti, devo parsare una risposta di google OAuth2, il formato del testo che ricevo è simile a questo:
HTTP/1.1 200 OK Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: Fri, 01 Jan 1990 00:00:00 GMT Date: Sat, 14 Sep 2013 09:56:20 GMT Content-Type: application/json X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block Server: GSE Alternate-Protocol: 443:quic Transfer-Encoding: chunked c4 { "access_token" : "ya29.AHES6ZSLbAFmae89RRvWJCiFhXbuNkaKwvxTWyOCuQgeZ2k", "token_type" : "Bearer", "expires_in" : 3600, "refresh_token" : "1/DI34dieiTUTKLdstMFDwfeywklpg-_KrhgCWK0v0xFI" } Devo estrarre solo il body scritto in json ovvero: { "access_token" : "ya29.AHES6ZSLbAFmae89RRvWJCiFhXbuNkaKwvxTWyOCuQgeZ4k", "token_type" : "Bearer", "expires_in" : 3600, "refresh_token" : "1/DI34diaeTUTKLdstMFDwfeywklpg-_KrhgCWK0v0xFI" } Stavo pensando di utilizzare un lookaround come (?<=) sulla break line, la parte che separa gli headers dal body del messaggio, e poi da li fare qualcosa tipo /({(\"{1}[A-Z_]+"{1}[ :]{1,3}"{1}[A-Z0-9.]+"{1},?)+)/im il problema è che non so come gestire il testo multiline, c'è qualcuno che ha la pazienza di aiutarmi, magari aiutandomi a costruire una regex decente? Per fare delle prove online consiglio http://www.gskinner.com/RegExr/ Tanto per la precisione sto usando C# ma non credo conti molto per il mio problema |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Jul 2005
Messaggi: 86
|
per ora sono riuscito a farla cosi:
/^[\{\s]+("?[A-Z0-9_\.\/\-]{3,}"?[ :,]{0,3})+/gim non è il massimo della vita.. se c'è qualcuno che può migliorarla lo ringrazio |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Io farei così
Codice:
/^({$.*^})$/ms |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:53.