<?xml version="1.0" encoding="utf-8"?>
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" id="xiphos-32-search-syntax" type="topic" xml:lang="fr">

  <info>
    <desc>Syntaxe de recherche utilisant des expressions rationnelles.</desc>

    <link type="guide" xref="index#search-function"/>

    <revision pkgversion="4.1.0" date="2018-04-24" status="draft"/>
    <revision pkgversion="4.1.0" date="2018-05-30" status="candidate"/>

    <title type="link" role="trail"/>
    <title type="text">Xiphos</title>

    <credit type="author" its:translate="no">
      <name>Andy Piper</name>
    </credit>
    <credit type="author" its:translate="no">
      <name>Pierre Benz</name>
    </credit>
    <credit type="author" its:translate="no">
      <name>Dr Peter von Kaehne</name>
    </credit>
    <credit type="author" its:translate="no">
      <name>Karl Kleinpaste</name>
    </credit>
    <credit type="author" its:translate="no">
      <name>Matthew Talbert</name>
    </credit>

    <include xmlns="http://www.w3.org/2001/XInclude" href="legal.xml"/>

  </info>

  <!-- id="hdbk-op-search-dialog-text-regexp" -->

  <title>Syntaxe du moteur de recherche</title>

  <p>La recherche au moyen d'expressions rationnelles permet d'effectuer des recherches simples ou complexes sur des chaînes de caractères correspondant à un motif, ou un ensemble de motifs séparés par une barre verticale « | ». Alors qu'un motif peut être crée pour rechercher un mot ou une phrase, un motif simple composé d'un seul mot ne permettra pas de rechercher seulement ce mot, mais toute séquence de caractères contenant ce mot. Une recherche du mot « droit » ne retournera pas seulement la liste des versets contenant le mot « <em>droit</em> »  mais aussi ceux contenant les mots « a<em>droit</em> », « <em>droit</em>e ». La recherche de « ne pas » ne retournera pas les versets contenant les mots « ne » ET « pas » mais les versets contenant la séquence « ne pas » avec une espace entre les deux mots. Une recherche de « ne pas » trouvera aussi les versets contenant « <em>ne pas</em>se ».</p>

  <p>La puissance des expressions rationnelles provient des motifs utilisés pour définir une clé de recherche. Un motif est constitué de caractères ordinaires et de quelques caractères  spéciaux qui sont interprétés suivant des règles précises. Les caractères spéciaux sont \[^*$?+. Les autres caractères sont des caractères ordinaires. La barre oblique inverse « \ », est utilisée pour convertir les caractères spéciaux en caractères ordinaires et inversement les caractères ordinaires en caractères spéciaux.</p>

  <p>Exemple : le motif « <em>.amour\.</em> » retournera les phrases qui se terminent par « s<em>o</em>n <em>amour</em> » ou « <em>l</em>'<em>amour</em> » ou « <em>d</em>'<em>amour</em> » suivi d'un point. Le premier point dans <em>.amour\.</em> est un caractère spécial dont la signification est de remplacer n'importe quel caractère à cette position. La barre oblique inverse dans <em>.amour\.</em> indique que le point  suivant ne doit pas être considéré comme un caractère spécial, mais comme un point ordinaire.</p>

  <section id="hdbk-op-search-dialog-text-regexp-rules">

    <title>Règles des requêtes de recherche à l'aide des expressions rationnelles</title>
    <list>
      <item>
	<p>« . » Le point remplace n'importe quel caractère.</p>
      </item>
      <item>
	<p>« * » L'astérisque correspond à toute répétition de caractères d'une chaîne ou d'une expression rationnelle la précédant, incluant zéro caractère.</p>
      </item>
      <item>
	<p>« + » Le signe plus correspond à une répétition ou plus de la précédente expression régulière. Il joue un rôle similaire à « * » (astérisque), mais ne correspond pas à zéro occurrence.</p>
      </item>
      <item>
	<p>« ? » Le point d'interrogation correspond à aucune ou une instance de la précédente expression rationnelle. Il est généralement utilisé pour correspondre à des caractères uniques.</p>
      </item>
      <item>
	<p>« [...] » Les crochets englobent un ensemble de caractères pour réaliser une correspondance dans une seule expression rationnelle.</p>
      </item>
      <item>
	<p>« ^ » La puissance comme premier caractère à l'intérieur d'accolades inverse la signification de l'ensemble des caractères de  l'expression rationnelle.</p>
      </item>
      <item>
	<p>« ^ » La puissance en dehors d'accolades correspond au début d'une ligne.</p>
      </item>
      <item>
	<p>« $ » Le signe dollar à la fin d'une expression rationnelle correspond à la fin d'une ligne.</p>
      </item>
      <item>
	<p>« | » La barre verticale signifie OU logique</p>
      </item>
      <item>
	<p>« () » Les parenthèses servent à regrouper des expressions. <em>Non supporté dans <app>Xiphos</app></em></p>
      </item>
      <item>
	<p>« \ » La barre oblique inverse échappe un caractère spécial, ce qui signifie que le caractère est interprété littéralement.</p>
      </item>
      <item>
	<p>« \ » La barre oblique inverse utilisée devant un caractère ordinaire, le transforme en caractère spécial.</p>
      </item>
    </list>

    <section id="period">

      <title>Le point</title>

      <p>Le point « . » remplace n'importe quel caractère y compris l'espace et d'autres caractères non alphabétiques. Par exemple : « 13. » correspond à 13 plus au moins un caractère (incluant une espace), ce qui retourne 1133, 11333 mais pas 13 (un caractère supplémentaire est manquant).</p>
    </section>


    <section id="asterisk">

      <title>L'astérisque</title>

      <p>L'astérisque « * » correspond à toute répétition de caractères d'une chaîne ou d'une expression rationnelle la précédant, incluant zéro caractère. Utiliser cette combinaison Point Astérisque « .* » après une chaîne de recherche fréquemment rencontrée peut prendre un temps très long, pouvant faire croire que le programme est bloqué. Exemple : « 1133* » correspond à 11 plus un ou plus de 3 ainsi que d'autres caractères : 113, 1133, 111312 et ainsi de suite.</p>
    </section>


    <section id="plus">

      <title>Le signe plus</title>

      <p>Le signe plus « + » correspond à une répétition ou plus de la précédente expression rationnelle. Il joue un rôle similaire à « * » (astérisque), mais ne correspond pas à zéro occurrence. Utiliser cette combinaison Point Signe Plus « .+ » après une chaîne de recherche fréquemment rencontrée peut prendre un temps très long, pouvant faire croire que le programme est bloqué. Exemple : Recherche de « abc » retourne « abcc », « abcerty », mais pas « abdf » ou « ab ».</p>
    </section>


    <section id="question">

      <title>Le point d'interrogation.</title>

      <p>Le point d'interrogation « ? » correspond à zéro ou une instance au plus du caractère ou motif précédent. Exemple : « rai?n » retournera « rang » et « grain ».</p>
    </section>


    <section id="bracket">

      <title>Les crochets</title>

      <p>Les crochets « [...] » entourent un ensemble de caractères pour réaliser une correspondance dans une seule expression rationnelle. Les caractères « . », « * », « + », « ? » perdent leur caractère spécial quand ils sont placés entre crochets. Un signe « - » indique une plage de caractères. « [xyz] » correspond aux caractères x, y ou z. « [c-n] » correspond à tout caractère compris entre c et n. « [B-Pk-y] » correspond à tout caractère compris entre B et P et entre k et y. « [a-z0-9] » correspond à toute lettre en minuscule et à tout chiffre. « [^b-d] » correspond à tous les caractères sauf ceux compris entre b et d. Ceci est un exemple de l'inversion de la signification de l'expression rationnelle suivante grâce à l'opérateur « ^ » (prenant le même rôle que « ! » dans un contexte différent). Les séquences combinées de caractères entre crochets correspondent à des modèles de mots communs. « [Oo][Uu][Ii] » correspond à oui, Oui, OUI, oUi et ainsi de suite. </p>
    </section>


    <section id="caret">

      <title>La puissance en premier caractère entre des crochets</title>

      <p>Si la puissance « ^ » est le premier caractère d'une expression entre crochets, il  inverse la signification de l'ensemble des caractères de l'expression rationnelle.</p>
    </section>

    <section id="caret-s">

      <title>La puissance correspond au début d'une ligne</title>

      <p>La puissance « ^ » correspond au début d'une ligne. Toutes les réponses correspondront au début d'une ligne comportant la séquence recherchée. Cependant, comme certains modules de textes contiennent des caractères non filtrés en début de ligne, cette fonction ne retourne pas toujours les résultats escomptés. Ajouter quelques points après la puissance, permet de contourner le défaut de format de certains textes. « <em>^Au commencement</em> » recherche les phrases commençant par « <em>Au commencement</em> ». (Mais il est préférable d'utiliser : « <em>^....Au commencement</em> »).</p>
    </section>


    <section id="dollar">

      <title>Le signe dollar signifie une fin de ligne</title>

      <p>Le signe dollar « $ » à la fin d'une expression régulière correspond à la fin d'une ligne. « XXX$ » correspond à XXX à la fin d'une ligne. « ^$ » correspond à des lignes blanches. Cependant, comme certains modules de textes contiennent des caractères non filtrés en fin de ligne, cette fonction ne retourne pas toujours les résultats escomptés. Ainsi ajouter quelques points après le dollar permet de contourner ce défaut de format de certains textes. « <em>Amen\.$</em> » retourne les phrases qui se terminent par « <em>Amen.</em> » (Il est préférable d'utiliser « Amen\....$ », « Amen\..........$ », ou même « Amen\....................$ »).</p>
    </section>


    <section id="bar">

      <title>La barre verticale</title>

      <p>La barre verticale « | » correspond à l'opérateur logique OU et permet donc de définir une alternative. « <em>Jean | Pierre</em> » retrouve les phrases contenant « <em>Jean</em> » ou « <em>Pierre</em> ». De même, « <em> Jean.*Pierre | Pierre.*Jean</em> » retourne « <em>Jean</em> ... <em>Pierre</em> » ou « <em>Pierre</em> ... <em>Jean</em> ». (* ralentit la recherche). « <em>douleur | souffrance | tourment</em> » retourne <em>douleur</em> ou <em>souffrance</em> ou <em>tourment</em>.</p>
    </section>


    <section id="parenth">

      <title>Les parenthèses</title>

      <p>L'usage des parenthèses « () » n'est pas supporté.</p>
    </section>


    <section id="backslash">

      <title>La barre oblique inverse précédant un caractère spécial</title>
      <p>La barre oblique inverse précédant un caractère spécial « \* » indique que ce caractère n'a plus de signification spéciale, mais devient un caractère ordinaire. <em>amen\.</em> retourne <em>amen.</em> mais pas <em>amen</em>t et ne trouvera donc pas firm<em>amen</em>t.</p>
    </section>

    <section id="backslash-o">

      <title>La barre oblique inverse précédant un caractère ordinaire</title>


      <p>La barre oblique inverse précédant un caractère ordinaire « \o » indique que ce caractère n'est plus utilisé comme tel mais prend une signification spéciale.</p>

      <list>
	<item>
	  <p>\b ce symbole d'ancrage indique une limite de mot obligatoire, à l'endroit où il est inséré dans le motif. Par contre, s'il est utilisé entre crochets, il correspond au caractère « retour arrière ». <em>\bjuste\b</em> retourne <em>juste</em> mais pas in<em>juste</em> ou <em>juste</em>sse.</p>
	</item>
	<item>
	  <p>\B indique qu'il n'y a pas de limite de mot <em>\Bleur\B</em> trouve cha<em>leur</em>euse mais pas cha<em>leur</em> ou <em>leur</em>re.</p>
	</item>
	<item>
	  <p>\d représente un chiffre, identique à [0-9].</p>
	</item>
	<item>
	  <p>\D signifie non-numérique, identique à [^0-9].</p>
	</item>
	<item>
	  <p>\s représente une espace.</p>
	</item>
	<item>
	  <p>\S signifie pas d'espace.</p>
	</item>
	<item>
	  <p>\w signifie alphanumérique, identique à [a-zA-Z0-9_].</p>
	</item>
	<item>
	  <p>\W signifie non alphanumérique, identique à [^a-zA-Z0-9_].</p>
	</item>
      </list>
    </section>
  </section>

</page>
