2011-05-21 4 views

Répondre

7

Les AND logiques dans les expressions régulières sont constitués d'une séquence d'assertions empilées. Par exemple:

(?=^.*foo) 
(?=^.*bar) 
(?=^.*glarch) 

correspond à tout chaîne qui contient tous les trois « foo », « bar » et « glarch », dans l'ordre, et même si certains doivent se chevaucher. (Ceci suppose une interprétation habituelle de ^ et ..)

Bien sûr, cette propriété n'est pas propre à Java.

+0

Est-ce considéré comme une seule regex? – EpsilonVector

+0

@EpsilonVector: Bien sûr! C'est si vous l'utilisez de cette façon. J'ai placé les sous-réverbères séparés chacun sur leur propre ligne pour la lisibilité. Cela nécessiterait en Java d'utiliser soit un (.x) 'ou un' Pattern.COMMENTS 'sur la compilation afin que la nouvelle ligne ne compte pas. Ou vous pouvez simplement caténer les trois pièces directement en utilisant '+ 'ou un autre mécanisme de jonction. Je peux mettre à jour la réponse à un exemple complet en Java si vous voulez, mais cela pourrait aider si vous me montriez ce que les choses que vous vouliez ET ensemble sont réellement. – tchrist