expression régulières, NSPredicate

ChachaChacha Membre
février 2006 modifié dans Objective-C, Swift, C, C++ #1
Salut,

Tout vient d'un bug que j'ai constaté dans iPhoto. Depuis la version 6, iPhoto permet enfin d'utiliser les caractères diacritiques (à , é, è, à¯, ç...) dans le champ de recherche. Par contre, ce benêt a oublié de se comporter comme Spotlight ou iTunes : dans ces deux derniers, les caractères diacritiques sont optionnels (on peut chercher <Jérôme> ou <jerome>, c'est pareil).
Du coup, je me suis interrogé sur la façon dont on pouvait faire ça en Cocoa. Et en cherchant Cocoa+diacritique sur Google, je suis tombé sur une classe que je n'avais jamais vue : NSPredicate.
C'est une sorte de langage de recherche qui permet de faire des requêtes bien balèzes. C'est conçu pour Spotlight et Core Data, mais les exemples montrent qu'on peut très bien s'en servir pour une pauvre NSString !
Du coup, NSPredicate devient une technique de choix pour faire les expressions régulières, ou la gestion des caractères diacritiques !

Sympa, non ?

+
Chacha

Réponses

  • LeChatNoirLeChatNoir Membre, Modérateur
    00:09 modifié #2
    Ben ouais ca a l'air très sympa !
    Merci Chacha !

    A noter : uniquement dispo à  partir de Tiger.
  • AliGatorAliGator Membre, Modérateur
    00:09 modifié #3
    Cool :)

    En effet j'avais entendu parler de NSPredicate déjà  (n'est-ce pas Renaud ? :)) et je savait vagement à  quoi ça servait (établir des expressions de filtrage/recherche, principalement pour CoreData et Spotlight).
    Mais je n'avais jamais eu l'occasion d'aller creuser et voir plus en détail ce qu'offrait cette classe.

    Ce que je ne savait pas c'est que cela supportait les expressions régulières !
    Ca c'est un bon point.

    Il n'empêche que pour des utilisations de RegEx avancées (remplacements y compris) c'est pas encore tout prévu, je veux dire ce n'est pas spécialisé non plus dans les RegEx, c'est juste que si on a besoin d'utiliser une RegEx pour rechercher un texte NSPredicate vient à  notre secours, mais de là  à  proposer les regex pour le remplacement c'est pas encore l'outil miracle de parseur de regex que j'aimerai avoir dans Cocoa  ;)

    Mais bon c'est clairement à  mettre de côté car ça peut s'avérer très pratique quand même :)
    Est-ce que ça gère les notions avancées de RegEx genre les backreferences et les forward/backward lookup ? "(?!bonjour) (?>monsieur)" par exemple
  • mars 2006 modifié #4
    dans 1139995004:

    l'outil miracle de parseur de regex que j'aimerai avoir dans Cocoa  ;)


    http://www8.ocn.ne.jp/~sonoisa/OgreKit/

    J'ose espérer que tu comprends le japonais.
Connectez-vous ou Inscrivez-vous pour répondre.