En plus des opérateurs décrits dans la section de recherche avancée, DocGoblin vous permet également d'utiliser des caractères génériques et des expressions régulières pour créer des schémas de recherche plus flexibles.
Caractères génériques
Les caractères génériques sont des caractères spéciaux qui remplacent un ou plusieurs caractères dans un mot. Les deux caractères génériques disponibles sont ? et *.
Le caractère générique ? remplace un seul caractère. Par exemple, la recherche te?t trouvera test, text, et tout autre mot de quatre lettres commençant par te et finissant par t.
Le caractère générique * remplace zéro ou plusieurs caractères. Par exemple, la recherche test* trouvera test, tests, testing, et tout autre mot commençant par test.
Vous pouvez combiner les deux caractères génériques dans une même recherche. Par exemple, la recherche t?st* trouvera test, testing, tastes, et tout autre mot correspondant à ce schéma.
Expressions régulières
Les expressions régulières (regex) sont un moyen puissant de décrire des schémas de texte. DocGoblin prend en charge un sous-ensemble de la syntaxe regex via Apache Lucene.
Pour utiliser une regex dans votre recherche, placez le schéma entre barres obliques : /schéma/. Les sections suivantes décrivent les constructions regex les plus utiles.
N'importe quel caractère
Le point . correspond à n'importe quel caractère unique. C'est l'équivalent regex du caractère générique ?.
Exemples :
/s.ake//.nak./
Une ou plusieurs occurrences
Le signe plus + correspond à une ou plusieurs occurrences du caractère précédent.
Exemple (correspond à der, deer, deeer, etc.) :
/de+r/
Zéro ou plusieurs occurrences
L'astérisque * correspond à zéro ou plusieurs occurrences du caractère précédent.
Exemple (correspond à wd, wed, weed, etc.) :
/we*d/
Zéro ou une occurrence
Le point d'interrogation ? correspond à zéro ou une occurrence du caractère précédent, le rendant optionnel.
Exemple (correspond à wed et weed) :
/wee?d/
Occurrences minimum et maximum
Les accolades {} permettent de spécifier un nombre exact ou une plage d'occurrences du caractère précédent :
{5}— exactement 5 occurrences{2,5}— entre 2 et 5 occurrences{2,}— au moins 2 occurrences
Exemples :
/we{2}d//we{2,}d//we{2,5}d/
Groupement
Les parenthèses () permettent de grouper des caractères afin que les quantificateurs s'appliquent à tout le groupe plutôt qu'à un seul caractère.
Exemples :
/w(..)+d//w(ee)*d//w(ee)?d/
Alternative
La barre verticale | correspond soit à l'expression à sa gauche, soit à l'expression à sa droite. Elle est généralement utilisée à l'intérieur d'un groupe.
Exemple (correspond à preparations et proportions) :
/(prepara|propor)tions/
Classes de caractères
Les classes de caractères permettent de faire correspondre un seul caractère à partir d'un ensemble de caractères.
Vous définissez une classe de caractères en plaçant les caractères acceptés entre crochets []. Vous pouvez également spécifier une plage de caractères en utilisant un tiret -.
Formes disponibles :
[abc]— correspond à a, b ou c[a-c]— correspond à a, b ou c (forme avec plage)[-abc]— correspond à -, a, b ou c[abc-]— correspond à a, b, c ou -[^abc]— correspond à tout caractère sauf a, b ou c[^a-c]— correspond à tout caractère sauf a, b ou c (forme avec plage)[^-abc]— correspond à tout caractère sauf -, a, b ou c
Comme indiqué ci-dessus, le circonflexe ^ au début d'une classe de caractères la négatise, et correspond alors à tout caractère ne faisant pas partie de l'ensemble.
Les classes de caractères peuvent être combinées avec toutes les autres constructions regex pour construire des schémas de recherche complexes.
Pour récupérer la chaîne de caractères "weed", l'expression suivante pourrait être utilisée :
/w[uiaeo]+d//w[uiaeo]*d//we[uiaeo]?d//w[a-u]*ed//we[^uiao]d/
Pour aller plus loin
DocGoblin utilise le moteur de regex d'Apache Lucene. Pour la référence syntaxique complète, consultez la documentation officielle de Lucene.
Si vous voulez expérimenter avec les regex dans un environnement bac à sable, essayez regex101.com, un testeur de regex en ligne gratuit.