Cliquez sur un bouton pour naviguer

2. Quoi de neuf dans cette version?

VERSION 1.1 (Octobre 1999)

Corrections et améliorations de la syntaxe des expressions régulières :

  1. Les séquences d'échappement suivantes similaires à celle de Perl sont autorisées :

    \w tout constituant d'un mot (équivalent à [a-zA-Z0-9_])
      \W  

    tout caractère sauf un constituant d'un mot (équivalent à [^a-zA-Z0-9_])

      \d   un chiffre (identique à[0-9])
      \D   tout sauf un chiffre
      \s   un caractère blanc
      \S   tout sauf un caractère blanc
      \b   une chaîne vide à la limite d'un mot
      \B   une chaîne vide qui n'est pas à la limite d'un mot
      \<   une chaîne vide au début d'un mot
      \>   une chaîne vide au début d'un mot

    Par exemple, '\w' est maintenant une expression valide correspondant à n'importe quel mot.

  2. Les séquences d'échappement suivantes sont également autorisées dans les classes de caractères (entre crochets) :

      \w, \W, \d, \D, \s et \S

  3. Les séquences suivantes, compatibles grep, sont reconnues également dans des classes de caractères :
  4.   [:alnum:]
      [:alpha:]
      [:cntrl:]
      [:digit:]
      [:graph:]
      [:lower:]
      [:print:]
      [:punct:]
      [:space:]
      [:upper:]
      [:xdigit:]

    Par exemple, les modèles suivants sont équivalents :

      '[[:alnum:]]+' '\w+' '[\w]+' '[a-zA-Z0-9]+'
  5. Certains caractères non imprimables peuvent être représentés dans des expressions régulières en utilisant la notation habituelle avec un backslash :

    \t tabulation (Character tab)
      \n  

    nouvelle ligne (Character lf)

      \r   retour chariot (Character cr)
      \f   saut de page (Character ff)
      \e   escape (Character esc)

  6. Un point est correctement interprété comme « n'importe quel caractère excepté un saut de ligne » au lieu de « tout sauf un blanc ».

  7. Correspondances insensibles à la casse. La méthode la plus simple consiste à utiliser les nouveaux messages que String comprend :
      #asRegexIgnoringCase,
      #matchesRegexIgnoringCase:,
      #prefixMatchesRegexIgnoringCase:

  8. Le comparateur (une instance de RxMatcher, le résultat de String>>asRegex) propose maintenant une interface de collection à des correspondances dans une chaîne particulière ou dans un flux particulier, aussi bien qu'un protocole de substitution. Cette interface comprend les messages suivants :
     

    matchesIn: uneChaine

      matchesIn: uneChaine collect: unBloc
      matchesIn: uneChaine do: unBloc
       
      matchesOnStream: unFlux
      matchesOnStream: unFlux collect: unBloc
      matchesOnStream: unFlux do: unBloc
       
      copy: uneChaine translatingMatchesUsing: unBloc
      copy: uneChaine replacingMatchesWith: chaineDeRemplacement
       
      copyStream: unFlux to: fluxOuvertEnEcriture translatingMatchesUsing: unBloc
      copyStream: unFlux to: fluxOuvertEnEcriture replacingMatchesWith: uneChaine

    Exemples :
      '\w+' asRegex matchesIn: 'now is the time'

    retourne une OrderedCollection contenant 4 chaînes : 'now', 'is', 'the' et 'time'.

      '\<t\w+' asRegexIgnoringCase
        copy: 'now is the time'
        translatingMatchesUsing: [:match | match asUppercase]

    retourne 'now is THE TIME' (l'expression régulière correspond à un début de mot commençant par T majuscule ou minuscule).

REMERCIEMENTS

Depuis la première version de ce comparateur, grâce aux remontées de plusieurs passionnés de Smalltalk, j'ai été convaincu qu'un outil de recherche d'expressions régulières valait bien l'effort de le faire avancer. Pour les conseils et les encouragements qui ont permis cette nouvelle version, je tiens à remercier :

  Felix Hack
  Eliot Miranda
  Robb Shecter
  David N. Smith
  Francis Wolinski

et tous ceux que je n'ai jamais rencontré ou dont je n'ai jamais entendu parler, mais qui sont persuadés que cela n'a pas été une perte de temps.

--Vassili Bykov
le 3 octobre 1999

Dernière modification le 18-03-2006