Toujours les regex

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Toujours les regex

Alarc'h
Bonjour,

je reviens vers la liste car il reste toujours des choses mystérieuses dans les regex de gambas 3.5.1.

Benoît m'a dit qu'à la place de oRegex.SubMatches[0] il fallait maintenant écrire oRegex[0]. Ce oRegex[x] est un tableau à deux entrées, l'offset et le texte. Ok je n'ai plus d'erreur mais toujours pas ce que je souhaite.

Je ne parviens pas à utiliser les parenthèses capturantes ni en gambas 2 ni en gambas 3. En prenant l'exemple de la doc (dans lequel au passage pour ne pas avoir d'erreur il faut échapper le type de caractère soit \\S) je ne récupère pas le contenu de la parenthèse seul. Est-ce que c'est ma regex qui est défectueuse ou bien ?

Voici le code ci-dessous.

En gambase 2 (précisemment gambas 2.21 sur Debian Squeeze) :

PUBLIC SUB Main()
 
  DIM oRegex AS Regexp
 
  oRegex = NEW Regexp("Portez ce vieux whisky au juge blond qui fume.", "vieux (\\S+)")
  PRINT "Texte retourné = " & oRegex.Text
  PRINT "Sous-chaîne capturée = " & oRegex.SubMatches[0].Text
 
END

me retourne :

Texte retourné = vieux whisky
Sous-chaîne capturée = vieux whisky

Alors que la documentation dit que je devrais récupérer : oRegex.SubMatches[0].Text --> "whisky"


Et en gambas 3.5 (précisemment gambas 3.5.1) :

Public Sub Main()

  Dim oRegex As Regexp

  oRegex = New Regexp("Portez ce vieux whisky au juge blond qui fume.", "vieux (\\S+)")
  Print "Texte retourné = " & oRegex.Text
  Print "Sous-chaîne capturée = " & oRegex[0].Text

End

me retourne également :

Texte retourné = vieux whisky
Sous-chaîne capturée = vieux whisky


------------------------------------------------------------------------------
WatchGuard Dimension instantly turns raw network data into actionable
security intelligence. It gives you real-time visual feedback on key
security issues and trends.  Skip the complicated setup - simply import
a virtual appliance and go from zero to informed in seconds.
http://pubads.g.doubleclick.net/gampad/clk?id=123612991&iu=/4140/ostg.clktrk
_______________________________________________
Gambas-user-fr mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gambas-user-fr
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Toujours les regex

flachyjoe
Bonjour,
ça ne serait pas plutôt

        oRegex.SubMatches[1]

et

        oRegex[1].Text

qui devrait contenir la sous-chaîne ? Il me semble bien que l'indice 0 a toujours contenu la totalité du texte correspondant au motif.

Bonne continuation.
Flachy Joe

Le 30/01/2014 14:18, Alarc'h a écrit :

> Bonjour,
>
> je reviens vers la liste car il reste toujours des choses mystérieuses dans les regex de gambas 3.5.1.
>
> Benoît m'a dit qu'à la place de oRegex.SubMatches[0] il fallait maintenant écrire oRegex[0]. Ce oRegex[x] est un tableau à deux entrées, l'offset et le texte. Ok je n'ai plus d'erreur mais toujours pas ce que je souhaite.
>
> Je ne parviens pas à utiliser les parenthèses capturantes ni en gambas 2 ni en gambas 3. En prenant l'exemple de la doc (dans lequel au passage pour ne pas avoir d'erreur il faut échapper le type de caractère soit \\S) je ne récupère pas le contenu de la parenthèse seul. Est-ce que c'est ma regex qui est défectueuse ou bien ?
>
> Voici le code ci-dessous.
>
> En gambase 2 (précisemment gambas 2.21 sur Debian Squeeze) :
>
> PUBLIC SUB Main()
>    
>    DIM oRegex AS Regexp
>    
>    oRegex = NEW Regexp("Portez ce vieux whisky au juge blond qui fume.", "vieux (\\S+)")
>    PRINT "Texte retourné = " & oRegex.Text
>    PRINT "Sous-chaîne capturée = " & oRegex.SubMatches[0].Text
>    
> END
>
> me retourne :
>
> Texte retourné = vieux whisky
> Sous-chaîne capturée = vieux whisky
>
> Alors que la documentation dit que je devrais récupérer : oRegex.SubMatches[0].Text --> "whisky"
>
>
> Et en gambas 3.5 (précisemment gambas 3.5.1) :
>
> Public Sub Main()
>
>    Dim oRegex As Regexp
>
>    oRegex = New Regexp("Portez ce vieux whisky au juge blond qui fume.", "vieux (\\S+)")
>    Print "Texte retourné = " & oRegex.Text
>    Print "Sous-chaîne capturée = " & oRegex[0].Text
>
> End
>
> me retourne également :
>
> Texte retourné = vieux whisky
> Sous-chaîne capturée = vieux whisky
>
>
> ------------------------------------------------------------------------------
> WatchGuard Dimension instantly turns raw network data into actionable
> security intelligence. It gives you real-time visual feedback on key
> security issues and trends.  Skip the complicated setup - simply import
> a virtual appliance and go from zero to informed in seconds.
> http://pubads.g.doubleclick.net/gampad/clk?id=123612991&iu=/4140/ostg.clktrk
> _______________________________________________
> Gambas-user-fr mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/gambas-user-fr

------------------------------------------------------------------------------
WatchGuard Dimension instantly turns raw network data into actionable
security intelligence. It gives you real-time visual feedback on key
security issues and trends.  Skip the complicated setup - simply import
a virtual appliance and go from zero to informed in seconds.
http://pubads.g.doubleclick.net/gampad/clk?id=123612991&iu=/4140/ostg.clktrk
_______________________________________________
Gambas-user-fr mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gambas-user-fr
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Toujours les regex

Alarc'h
Le Thu, 30 Jan 2014 18:42:19 +0100,
Flachy Joe <[hidden email]> a écrit :

> Bonjour,
> ça ne serait pas plutôt
>
> oRegex.SubMatches[1]
>
> et
>
> oRegex[1].Text
>
> qui devrait contenir la sous-chaîne ? Il me semble bien que l'indice 0 a toujours contenu la totalité du texte correspondant au motif.
>
> Bonne continuation.
> Flachy Joe

Oui c'est ça en effet. J'avais lu ça quelque part en plus, mais j'avais compris de travers.

Merci beaucoup, je commençais à tourner en bourrique.

------------------------------------------------------------------------------
WatchGuard Dimension instantly turns raw network data into actionable
security intelligence. It gives you real-time visual feedback on key
security issues and trends.  Skip the complicated setup - simply import
a virtual appliance and go from zero to informed in seconds.
http://pubads.g.doubleclick.net/gampad/clk?id=123612991&iu=/4140/ostg.clktrk
_______________________________________________
Gambas-user-fr mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gambas-user-fr
Loading...