cvs: phpdoc /fr/functions pcre.xml
| From: | Damien Seguy | Date: | Mon, 23 Jul 2001 08:13:02 +0000 |
| Subject: | cvs: phpdoc /fr/functions pcre.xml | ||
| Groups: | php.doc | ||
| Request: | Send a blank email to phpdoc+get-969336443@lists.php.net to get a copy of this message | ||
dams Mon Jul 23 04:13:02 2001 EDT
Modified files:
/phpdoc/fr/functions pcre.xml
Log:
Added U option.
Index: phpdoc/fr/functions/pcre.xml diff -u phpdoc/fr/functions/pcre.xml:1.24 phpdoc/fr/functions/pcre.xml:1.25 --- phpdoc/fr/functions/pcre.xml:1.24 Sat Jul 7 18:22:19 2001 +++ phpdoc/fr/functions/pcre.xml Mon Jul 23 04:13:01 2001 @@ -7,7 +7,7 @@ fort à celle de Perl. Les expressions seront entourées de délimiteurs, slash (/), par exemple. N'importe quel caractère peut servir de délimiteur, tant qu'il - n'est pas alpha-numérique ou n'est pas un antislash (\). + n'est pas alpha-numérique ou n'est pas un antislash (\). Si un délimiteur doit être utilisé dans l'expression, il faudra l'échapper avec un antislash. Depuis PHP 4.0.4, vous pouvez utiliser les délimiteurs @@ -22,10 +22,10 @@ <example> <title>Exemples de masques valides</title> <itemizedlist> - <listitem><simpara><literal>/<\/\w+>/</literal></simpara></listitem> - <listitem><simpara><literal>|(\d{3})-\d+|Sm</literal></simpara></listitem> + <listitem><simpara><literal>/<\/\w+>/</literal></simpara></listitem> + <listitem><simpara><literal>|(\d{3})-\d+|Sm</literal></simpara></listitem> <listitem><simpara><literal>/^(?i)php[34]/</literal></simpara></listitem> - <listitem><simpara><literal>{^\s+(\s+)?$}</literal></simpara></listitem> + <listitem><simpara><literal>{^\s+(\s+)?$}</literal></simpara></listitem> </itemizedlist> </example> </para> @@ -40,12 +40,12 @@ </listitem> <listitem> <simpara> - /\w+\s*\w+/J - option 'J' inconnue + /\w+\s*\w+/J - option 'J' inconnue </simpara> </listitem> <listitem> <simpara> - 1-\d3-\d3-\d4| - délimiteur initial manquant + 1-\d3-\d3-\d4| - délimiteur initial manquant </simpara> </listitem> </itemizedlist> @@ -102,7 +102,7 @@ <title>Extraction d'un numéro de page d'une chaîne.</title> <programlisting role="php"> <?php -if (preg_match("/page\s+#(\d+)/i", "Aller à la page numéro 9.", $parts)) +if (preg_match("/page\s+#(\d+)/i", "Aller à la page numéro 9.", $parts)) print "La page suivante est $parts[1]"; else print "Page introuvable."; @@ -113,15 +113,15 @@ <title>Trouve le mot "web"</title> <programlisting role="php"> <?php -// \b, dans le masque, indique une limite de mot, de façon à ce que le mot +// \b, dans le masque, indique une limite de mot, de façon à ce que le mot // "web" uniquement soit repéré, et pas seulement des parties de mots comme // dans "webbing" ou "cobweb" -if (preg_match ("/\bweb\b/i", "PHP est le meilleur langage de script du web.")) { +if (preg_match ("/\bweb\b/i", "PHP est le meilleur langage de script du web.")) { print "Un mot a été trouvé."; } else { print "Un mot n'a pas été trouvé."; } -if (preg_match ("/\bweb\b/i", "PHP est le meilleur langage de script pour les webagency.")) { +if (preg_match ("/\bweb\b/i", "PHP est le meilleur langage de script pour les webagency.")) { print "Un mot a été trouvé."; } else { print "Un mot n'a pas été trouvé."; @@ -134,12 +134,12 @@ <programlisting role="php"> <?php // repérer le nom de l'hôte dans l'URL -preg_match("/^(http:\/\/)?([^\/]+)/i", +preg_match("/^(http:\/\/)?([^\/]+)/i", "http://www.php.net/index.html", $matches); $host = $matches[2]; // repérer les deux derniers segments du nom de l'hôte -preg_match("/[^\.\/]+\.[^\.\/]+$/",$host,$matches); -echo "Le nom de domaine est : ".$matches[0]."\n"; +preg_match("/[^\.\/]+\.[^\.\/]+$/",$host,$matches); +echo "Le nom de domaine est : ".$matches[0]."\n"; ?> </programlisting> </example> @@ -147,7 +147,8 @@ <computeroutput> Le nom de domaine est : php.net </computeroutput> - Voir aussi <function>preg_match_all</function>, + Voir aussi + <function>preg_match_all</function>, <function>preg_replace</function> et <function>preg_split</function>. </para> @@ -197,8 +198,8 @@ <programlisting role="php"> <?php preg_match_all("|<[^>]+>(.*)</[^>]+>|U", "<b>example: </b><div align=left>a test</div>", $out, PREG_PATTERN_ORDER); -print $out[0][0].", ".$out[0][1]."\n"; -print $out[1][0].", ".$out[1][1]."\n"; +print $out[0][0].", ".$out[0][1]."\n"; +print $out[1][0].", ".$out[1][1]."\n"; ?> </programlisting> </informalexample> @@ -206,7 +207,7 @@ <informalexample> <literallayout> <computeroutput> -<b>exemple: </b>, <div align=left>ceci est un test</div> +<b>exemple: </b>, <div align=left>ceci est un test</div> exemple: , ceci est un test </computeroutput> </literallayout> @@ -229,8 +230,8 @@ <programlisting role="php"> <?php preg_match_all("|<[^>]+>(.*)</[^>]+>|U", "<b>exemple: </b><div align=left>un test</div>", $out, PREG_SET_ORDER); -print $out[0][0].", ".$out[0][1]."\n"; -print $out[1][0].", ".$out[1][1]."\n"; +print $out[0][0].", ".$out[0][1]."\n"; +print $out[1][0].", ".$out[1][1]."\n"; ?> </programlisting> </informalexample> @@ -258,8 +259,9 @@ utilisé par défaut. </para> <para> - Retourne le nombre de résultat qui satisfont le masque - complet, ou &false; en cas d'échec ou d'erreur. + <function>preg_match_all</function> retourne le nombre de + résultat qui satisfont le masque complet, ou &false; + en cas d'échec ou d'erreur. </para> <para> <example> @@ -268,7 +270,7 @@ </title> <programlisting role="php"> <?php -preg_match_all("/\(? (\d{3})? \)? (?(1) [\-\s] ) \d{3}-\d{4}/x", + preg_match_all("/\(? (\d{3})? \)? (?(1) [\-\s] ) \d{3}-\d{4}/x", "Appelez 555-1212 ou 1-800-555-1212", $phones); ?> </programlisting> @@ -279,19 +281,19 @@ <title>Recherche les couples de balises HTML (gourmand)</title> <programlisting role="php"> <?php -// Cet exemple utilise les références arrières (\\2). +// Cet exemple utilise les références arrières (\\2). // Elles indiquent à l'analyseur qu'il doit trouver quelquechose qu'il // a déjà repéré un peu plus tôt // le nombre 2 indique que c'est le deuxième jeu de parenthèses -// capturante qui doit être utilisé (ici, ([\w]+)). +// capturante qui doit être utilisé (ici, ([\w]+)). // L'antislash est nécessaire ici, car la chaîne est entre guillemets doubles $html = "<B>Texte en gras</B><a href=salut.html>clique moi</?> -preg_match_all ("/(<([\w]+)[?>]?>)(.*)(<\/\\?>)/", $html, $matches); +preg_match_all ("/(<([\w]+)[?>]?>)(.*)(<\/\\?>)/", $html, $matches); for ($i=0; $i< count($matches[0]); $i++) { - echo "trouvé: ".$matches[0][$i]."\n"; - echo "partie 1: ".$matches[1][$i]."\n"; - echo "partie 2: ".$matches[3][$i]."\n"; - echo "partie 3: ".$matches[4][$i]."\n\n"; + echo "trouvé: ".$matches[0][$i]."\n"; + echo "partie 1: ".$matches[1][$i]."\n"; + echo "partie 2: ".$matches[3][$i]."\n"; + echo "partie 3: ".$matches[4][$i]."\n\n"; } ?> </programlisting> @@ -309,7 +311,8 @@ </computeroutput> </para> <simpara> - Voir aussi <function>preg_match</function>, + Voir aussi + <function>preg_match</function>, <function>preg_replace</function> et <function>preg_split</function>. </simpara> @@ -342,15 +345,15 @@ </para> <para> <parameter>replacement</parameter> peut contenir des références - de la forme <literal>\\<replaceable>n</replaceable></literal> ou, + de la forme <literal>\\<replaceable>n</replaceable></literal> ou, depuis PHP 4.0.4) <literal><replaceable>$n</replaceable></literal>. Cette dernière forme est recommandée. Ces références seront remplacées par le texte capturé par la <replaceable>n</replaceable>'-ième parenthèse capturante du masque. <replaceable>n</replaceable> peut prendre des valeurs de 0 à - 99, et <literal>\\0</literal> ou <literal>$0</literal>, correspondent + 99, et <literal>\\0</literal> ou <literal>$0</literal>, correspondent au texte de qui satisfait le masque complet. Les parenthèses - ouvrantes sont comptées de gauche à droite (en commencant + ouvrantes sont comptées de gauche à droite (en commençant à 1) pour déterminer le numéro de parenthèse capturante. </para> @@ -383,7 +386,7 @@ <literal>/e</literal> force <function>preg_replace</function> à traiter <parameter>replacement</parameter> comme du code PHP une fois que les substitutions adéquates ont - été faites. Conseil :assurez vous que + été faites. Conseil :assurez-vous que <parameter>replacement</parameter> est un code PHP valide, car sinon, PHP trouvera une erreur d'analyse (parse error) dans cette ligne. </para> @@ -400,9 +403,9 @@ <title>Remplacement de plusieurs valeurs</title> <programlisting role="php"> <?php -$patterns = array ("/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/", - "/^\s*{(\w+)}\s*=/"); -$replace = array ("\\3/\\4/\\1\\2", "$\\1 ="); +$patterns = array ("/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/", + "/^\s*{(\w+)}\s*=/"); +$replace = array ("\\3/\\4/\\1\\2", "$\\1 ="); print preg_replace ($patterns, $replace, "{startDate} = 1999-5-27"); ?> </programlisting> @@ -415,7 +418,7 @@ <title>Utilisation de l'option /e </title> <programlisting role="php"> <?php -preg_replace("/(<\/?)(\w+)([^>]*>/e", "'\\1'.strtoupper('\\2').'\\3'", $html_body); + preg_replace("/(<\/?)(\w+)([^>]*>/e", "'\\1'.strtoupper('\\2').'\\3'", $html_body); ?> </programlisting> <para> @@ -428,12 +431,12 @@ <?php // $document contient un document HTML // Ce script va effacer les balises HTML, les javascript -// et les espaces. Il remplace aussi queqlues entitées HTML +// et les espaces. Il remplace aussi quelques entités HTML // courante en leur équivalent texte. $search = array ("'<script[?>]*?>.*?</script>'si", // Supprime le javascript - "'<[\/\!]*?[^<?>]*?>'si", // Supprime les balises HTML - "'([\r\n])[\s]+'", // Supprime les espaces - "'&(quot|#34);'i", // Supprime les entitees HTML + "'<[\/\!]*?[^<?>]*?>'si", // Supprime les balises HTML + "'([\r\n])[\s]+'", // Supprime les espaces + "'&(quot|#34);'i", // Supprime les entites HTML "'&(amp|#38);'i", "'&(lt|#60);'i", "'&(gt|#62);'i", @@ -442,11 +445,11 @@ "'&(cent|#162);'i", "'&(pound|#163);'i", "'&(copy|#169);'i", - "'&#(\d+);'e"); // Evaluation comme PHP + "'&#(\d+);'e"); // Evaluation comme PHP $replace = array ("", "", - "\\1", - "\"", + "\\1", + "\"", "&", "<", ?>", @@ -455,7 +458,7 @@ chr(162), chr(163), chr(169), - "chr(\\1)"); + "chr(\\1)"); $text = preg_replace ($search, $replace, $document); ?> </programlisting> @@ -468,9 +471,10 @@ </para> </note> <para> - Voir aussi <function>preg_match</function>, - <function>preg_match_all</function> - et <function>preg_split</function>. + Voir aussi + <function>preg_match</function>, + <function>preg_match_all</function> et + <function>preg_split</function>. </para> </refsect1> </refentry> @@ -572,7 +576,7 @@ <note> <para> Le paramètre <parameter>flags</parameter> a été - ajouté dans PHP Beta 3. + ajouté en PHP Beta 3. </para> </note> <para> @@ -581,25 +585,33 @@ <programlisting role="php"> <?php // scinde la phrase grâce aux virgules et espacements -// ce qui inclus les " ", \r, \t, \n et \f -$keywords = preg_split ("/[\s,]+/", "langage hypertexte, programmation"); +// ce qui inclus les " ", \r, \t, \n et \f +$keywords = preg_split ("/[\s,]+/", "langage hypertexte, programmation"); ?> </programlisting> </example> </para> <para> - Scinder une chaîne en caractères - </para> - <programlisting role="php"> + <example> + <title>Scinder une chaîne en caractères</title> + <programlisting role="php"> <?php $str = 'string'; $chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY); print_r($chars); ?> - </programlisting> + </programlisting> + </example> + </para> <para> - Voir aussi <function>preg_match</function>, <function>preg_match_all</function> - et <function>preg_replace</function>. + Voir aussi + <function>explode</function>, + <function>spliti</function>, + <function>split</function>, + <function>implode</function>, + <function>preg_match</function>, + <function>preg_match_all</function> et + <function>preg_replace</function>. </para> </refsect1> </refentry> @@ -637,7 +649,7 @@ </para> <para> Les caractères spéciaux qui seront échappés : - <screen>. \\ + * ? [ ^ ] $ ( ) { } = ! < > | :</screen> + <screen>. \\ + * ? [ ^ ] $ ( ) { } = ! < > | :</screen> </para> <para> <example> @@ -646,7 +658,7 @@ <?php $keywords = "$40 pour un g3/400"; $keywords = preg_quote ($keywords, "/"); -echo $keywords; // retourne \$40 pour un g3\/400 +echo $keywords; // retourne \$40 pour un g3\/400 ?> </programlisting> </example> @@ -699,7 +711,7 @@ <programlisting role="php"> <?php // recherche les nombres à virgule flottante -preg_grep("/^(\d+)?\.\d+$/", $array); +preg_grep("/^(\d+)?\.\d+$/", $array); ?> </programlisting> </example> @@ -716,7 +728,7 @@ <refsect1> <title>Description</title> <para> - Les options de PCRE sont listées ci dessous. Les noms entre + Les options de PCRE sont listées ci-dessous. Les noms entre parenthèses sont les noms internes à PCRE. </para> <para> @@ -740,7 +752,7 @@ valable qu'une seule fois, au début de la ligne, et le méta caractère "fin de ligne " ($) ne sera valable qu'à la fin de la chaîne, ou avant le retour chariot - final (à moins que l'option E ne soit activée). C'est le + final (à moins que l'option D ne soit activée). C'est le même fonctionnement qu'en Perl. </simpara> <simpara> @@ -749,9 +761,9 @@ suivant et précédent immédiatement un caractère de nouvelle ligne, en plus du début et de la fin de la chaîne. C'est le même - fonctionnement que l'option Perl /m. Si il n'y a pas de - caractère de nouvelle ligne "\n" dans la chaîne sujet, - ou si il n'y a aucune occurrence de ^ ou $ dans le masque, cette option + fonctionnement que l'option Perl /m. S'il n'y a pas de + caractère de nouvelle ligne "\n" dans la chaîne sujet, + ou s'il n'y a aucune occurrence de ^ ou $ dans le masque, cette option ne sert à rien. </simpara> </listitem> @@ -810,8 +822,7 @@ <term><emphasis>A</emphasis> (PCRE_ANCHORED)</term> <listitem> <simpara> - Avec cette option, le masque est ancré de force, c'est - à dire que le masque doit s'appliquer entre le début + Avec cette option, le masque est ancré de force, c'est-à-dire que le masque doit s'appliquer entre le début et la fin de la chaîne sujet pour être considéré comme trouvé. Il est possible de réaliser le même effet en @@ -872,11 +883,22 @@ permettant la réservation de ces combinaisons pour des ajouts fonctionnels ultérieurs. Par défaut, comme en Perl, les antislash suivis d'une lettre sans signification particulière - sont traités comme des valeurs litérales. Actuellement, + sont traités comme des valeurs littérales. Actuellement, cette option ne déclenche pas d'autres fonctions. </simpara> </listitem> </varlistentry> + <varlistentry> + <term><emphasis>u</emphasis> (PCRE_UTF8)</term> + <listitem> + <simpara> + Cette option inactive les fonctionnalités additionnelles de + PCRE qui ne sont pas compatibles avec Perl. Les chaînes sont + traitées comme des chaînes UTF-8. Cette option est disponible en + PHP 4.0.7 et plus récent. + </simpara> + </listitem> + </varlistentry> </variablelist> </blockquote> </para> @@ -914,11 +936,11 @@ &true; pour les espaces, les retours chariot, les nouvelles lignes, les formfeed, les tabulations verticales et horizontales. Le Perl 5 n'accepte plus la tabulation verticale comme caractère - d'espacement. La séquence \v qui était dans la documentation + d'espacement. La séquence \v qui était dans la documentation Perl depuis longtemps n'a jamais été reconnue. Cependant, la tabulation verticale elle-même était reconnue comme un caractère d'espacement jusqu'à la version 5.002. Avec les - version 5.004 et 5.005, l'option \s l'ignore. + version 5.004 et 5.005, l'option \s l'ignore. </simpara> </listitem> <listitem> @@ -946,21 +968,21 @@ chaîne de recherche, ils ne sont pas acceptés dans le masque, car le masque est utilisé comme une chaîne C standard, terminée par le caractère nul. Il faut donc utiliser la - séquence d'échappement "\0" dans le masque pour rechercher + séquence d'échappement "\0" dans le masque pour rechercher les caractères nul. </simpara> </listitem> <listitem> <simpara> Les séquence d'échappement suivantes ne sont pas supportées - par le Perl: \l, \u, \L, \U, \E, \Q. En fait, elles sont implémentées + par le Perl: \l, \u, \L, \U, \E, \Q. En fait, elles sont implémentées par la gestion intrinsèque de chaînes du Perl, et ne font pas partie de ses caractères spéciaux. </simpara> </listitem> <listitem> <simpara> - L'assertion \G du Perl n'est pas supportée car elle n'est pas pertinente + L'assertion \G du Perl n'est pas supportée car elle n'est pas pertinente pour faire des recherches avec des masques uniques. </simpara> </listitem> @@ -1010,7 +1032,7 @@ activé, et que <link linkend="pcre.pattern.modifiers">PCRE_MULTILINE</link> n'est pas activé, le méta caractère <literal>$</literal> ne s'applique qu'à la fin - physqiue de la chaîne, et non pas avant les caractères + physique de la chaîne, et non pas avant les caractères de nouvelle ligne. </simpara> </listitem> @@ -1026,7 +1048,7 @@ (d) SI <link linkend="pcre.pattern.modifiers">PCRE_UNGREEDY</link> est activé, la "gourmandise" des quantificateurs de répétition est inversées, ce qui est rend non - gourmand par défaut, mais si ils sont suivis de ?, il seront + gourmand par défaut, mais s'ils sont suivis de ?, il seront gourmands. </simpara> </listitem> @@ -1052,7 +1074,7 @@ </simpara> <simpara> Une expression régulière est un masque, appliqué à - une chaîne sujet, de gauche à droite. La plus part des + une chaîne sujet, de gauche à droite. La plupart des caractères se représentent eux-mêmes. Un exemple trivial : un masque qui serait "<literal>Le rapide renard gris</literal>", pourra correspondre à une partie de la chaîne sujet qui sera @@ -1072,7 +1094,7 @@ </para> <para> Il y a deux sortes de méta-caractères : ceux qui sont - reconnus n'importe oú dans un masque, hormis entre crochets, + reconnus n'importe où dans un masque, hormis entre crochets, et ceux qui sont reconnus entre crochets. </para> <para> @@ -1199,7 +1221,7 @@ les seuls méta caractères autorisés sont : <variablelist> <varlistentry> - <term><emphasis>\</emphasis> Antislash</term> + <term><emphasis>\</emphasis> Antislash</term> <listitem> <simpara> Caractère d'échappement, avec de multiples usages @@ -1249,13 +1271,13 @@ à l'intérieur et à l'extérieur des classes de caractères. Par exemple, pour recherche le caractère étoile "<literal>*</literal>", il faut - écrire dans le masque : "<literal>\*</literal>". Cela + écrire dans le masque : "<literal>\*</literal>". Cela s'applique dans tous les cas, que le caractère qui suive soit un méta-caractère ou non. C'est un moyen sûr pour s'assurer qu'un caractère sera recherché - pour sa valeur litérale, plutôt que pour sa valeur + pour sa valeur littérale, plutôt que pour sa valeur spéciale. En particulier, pour rechercher les antislash, - il faut écrire : "<literal>\\</literal>". + il faut écrire : "<literal>\\</literal>". </para> <para> Si un masque est utilisé avec l'option @@ -1279,15 +1301,15 @@ plutôt que le caractère binaire qu'elle représente : <variablelist> <varlistentry> - <term><emphasis>\a</emphasis></term> + <term><emphasis>\a</emphasis></term> <listitem> <simpara> - alarme, c'est à dire le caractère BEL (hex 07) + alarme, c'est-à-dire le caractère BEL (hex 07) </simpara> </listitem> </varlistentry> <varlistentry> - <term><emphasis>\cx</emphasis></term> + <term><emphasis>\cx</emphasis></term> <listitem> <simpara> "control-x", avec x qui peut être n'importe quel caractère. @@ -1295,7 +1317,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\e</emphasis></term> + <term><emphasis>\e</emphasis></term> <listitem> <simpara> escape (hex 1B) @@ -1303,7 +1325,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\f</emphasis></term> + <term><emphasis>\f</emphasis></term> <listitem> <simpara> formfeed (hex 0C) @@ -1311,7 +1333,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\n</emphasis></term> + <term><emphasis>\n</emphasis></term> <listitem> <simpara> nouvelle ligne (hex 0A) @@ -1319,7 +1341,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\r</emphasis></term> + <term><emphasis>\r</emphasis></term> <listitem> <simpara> retour chariot (hex 0D) @@ -1327,7 +1349,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\t</emphasis></term> + <term><emphasis>\t</emphasis></term> <listitem> <simpara> tabulation (hex 09) @@ -1335,7 +1357,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\xhh</emphasis></term> + <term><emphasis>\xhh</emphasis></term> <listitem> <simpara> caractère en hexadécimal, de code hh @@ -1343,7 +1365,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\ddd</emphasis></term> + <term><emphasis>\ddd</emphasis></term> <listitem> <simpara> caractère en octal, de code ddd, ou référence arrière @@ -1353,30 +1375,30 @@ </variablelist> </para> <para> - Dans la séquence "<literal>\cx</literal>" si "<literal>x</literal>" + Dans la séquence "<literal>\cx</literal>" si "<literal>x</literal>" est en minuscule, il est converti en majuscule. Puis, le bit 6 (hex 40) - est inversé. Ainsi "<literal>\cz</literal>" devient <literal>1A</literal>, - mais "<literal>\c{</literal>" devient hex 3B, tandis que "<literal>\c;</literal>" + est inversé. Ainsi "<literal>\cz</literal>" devient <literal>1A</literal>, + mais "<literal>\c{</literal>" devient hex 3B, tandis que "<literal>\c;</literal>" devient hex 7B. </para> <para> - Après "<literal>\x</literal>", deux caractères + Après "<literal>\x</literal>", deux caractères hexadécimaeux sont lus (les lettres peuvent être en majuscule ou minuscule). </para> <para> - Après "<literal>\0</literal>", deux caractères octal sont lus. + Après "<literal>\0</literal>", deux caractères octal sont lus. Dans chacun des cas, le méta-caractère tente de lire autant de caractère que possible. Ainsi la séquence - "<literal>\0\x\07</literal>", sera comprise comme deux caractères nuls, - suivi d'un caractère alarme (BEL). Assurez vous que vous fournissez + "<literal>\0\x\07</literal>", sera comprise comme deux caractères nuls, + suivi d'un caractère alarme (BEL). Assurez-vous que vous fournissez suffisamment de chiffres après le méta-caractère. </para> <para> - La gestion de la séquence "<literal>\y</literal>", avec y <> 0 + La gestion de la séquence "<literal>\y</literal>", avec y <> 0 est plutôt compliquée. En dehors des caractères de classes, PCRE va lire y et tous les caractères qui suivent comme des chiffres - décimaux. Si y est plus petit que 10, ou bien si il y a + décimaux. Si y est plus petit que 10, ou bien s'il y a déjà eu au moins autant de parenthèses ouvrantes auparavant, la séquence est prise pour une référence arrière. Le détail sera vu ultérieurement, après la @@ -1386,13 +1408,13 @@ A l'intérieur d'un caractère de classe, ou si y est plus grand que 10, et qu'il n'y a pas eu assez de parenthèses ouvrantes auparavant, PCRE lis jusqu'à 3 chiffres octals à la suite - de l'antislash, et génére un octet unique, à partir + de l'antislash, et génère un octet unique, à partir des 8 bits de poids faible de la séquence. Tous les chiffres qui suivent ne sont pas interprétés, et se representent eux-mêmes. Par exemple: <variablelist> <varlistentry> - <term><emphasis>\040</emphasis></term> + <term><emphasis>\040</emphasis></term> <listitem> <simpara> une autre manière d'écrire un espace @@ -1400,16 +1422,16 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\40</emphasis></term> + <term><emphasis>\40</emphasis></term> <listitem> <simpara> - identique, dans la mesure oú il n'y a pas 40 parenthèses + identique, dans la mesure où il n'y a pas 40 parenthèses ouvrantes auparavant </simpara> </listitem> </varlistentry> <varlistentry> - <term><emphasis>\7</emphasis></term> + <term><emphasis>\7</emphasis></term> <listitem> <simpara> est toujours une référence arrière @@ -1417,7 +1439,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\11</emphasis></term> + <term><emphasis>\11</emphasis></term> <listitem> <simpara> peut être une référence de retour, @@ -1426,7 +1448,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\011</emphasis></term> + <term><emphasis>\011</emphasis></term> <listitem> <simpara> toujours une tabulation @@ -1434,7 +1456,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\0113</emphasis></term> + <term><emphasis>\0113</emphasis></term> <listitem> <simpara> est une tabulation suivi du caractère "3" @@ -1442,7 +1464,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\113</emphasis></term> + <term><emphasis>\113</emphasis></term> <listitem> <simpara> est le caractère 113 (étant donné qu'il ne @@ -1451,7 +1473,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\377</emphasis></term> + <term><emphasis>\377</emphasis></term> <listitem> <simpara> est un octet dont tous les bits sont à 1 @@ -1459,7 +1481,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\0113</emphasis></term> + <term><emphasis>\0113</emphasis></term> <listitem> <simpara> peut être soit une référence arrière, @@ -1478,7 +1500,7 @@ Toutes les séquences qui définissent une valeur d'un seul octet peuvent être utilisé dans les classes de caractères, et à l'extérieur. De plus, dans une classe de caractères, - la séquence "<literal>\b</literal>" est interprétée + la séquence "<literal>\b</literal>" est interprétée comme un caractère effacer (backspace, hex 08). A l'extérieur d'une classe de caractères, il peut avoir d'autres significations (voir ci-dessous). @@ -1488,7 +1510,7 @@ génériques de valeurs : <variablelist> <varlistentry> - <term><emphasis>\d</emphasis></term> + <term><emphasis>\d</emphasis></term> <listitem> <simpara> tout caractère décimal @@ -1496,7 +1518,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\D</emphasis></term> + <term><emphasis>\D</emphasis></term> <listitem> <simpara> tout caractère qui n'est pas un caractère décimal @@ -1504,7 +1526,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\S</emphasis></term> + <term><emphasis>\S</emphasis></term> <listitem> <simpara> tout caractère blanc @@ -1512,7 +1534,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\s</emphasis></term> + <term><emphasis>\s</emphasis></term> <listitem> <simpara> tout caractère qui n'est pas un caractère blanc @@ -1520,7 +1542,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\W</emphasis></term> + <term><emphasis>\W</emphasis></term> <listitem> <simpara> tout caractère de "mot" @@ -1528,7 +1550,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\w</emphasis></term> + <term><emphasis>\w</emphasis></term> <listitem> <simpara> tout caractère qui n'est pas un caractère de "mot" @@ -1545,7 +1567,7 @@ </para> <para> Un caractère de "mot" sera une lettre, un chiffre ou le - caractère souligné, c'est à dire un + caractère souligné, c'est-à-dire un caractère qui pourra être une partie d'un mot Perl. La définition des lettres et chiffres est définie par les tables de caractères de PCRE, et peut varier suivant la table @@ -1553,7 +1575,7 @@ ci-dessus. Par exemple, dans la configuration français ("fr"), certains caractères ont des codes supérieurs à 128, pour les caractères accentués, et ils seront compris - par le méta caractère <literal>\w</literal>. + par le méta caractère <literal>\w</literal>. </para> <para> Ces séquences de caractères peuvent apparaître à @@ -1571,7 +1593,7 @@ plus-bas. Les assertions avec antislash sont les suivantes : <variablelist> <varlistentry> - <term><emphasis>\b</emphasis></term> + <term><emphasis>\b</emphasis></term> <listitem> <simpara> limite de mot @@ -1579,7 +1601,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\B</emphasis></term> + <term><emphasis>\B</emphasis></term> <listitem> <simpara> pas limite de mot @@ -1587,7 +1609,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\A</emphasis></term> + <term><emphasis>\A</emphasis></term> <listitem> <simpara> début de la chaîne sujet @@ -1596,7 +1618,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\Z</emphasis></term> + <term><emphasis>\Z</emphasis></term> <listitem> <simpara> fin de la chaîne sujet ou nouvelle ligne à @@ -1606,7 +1628,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\z</emphasis></term> + <term><emphasis>\z</emphasis></term> <listitem> <simpara> fin de la chaîne sujet @@ -1618,27 +1640,27 @@ </para> <para> Ces assertions ne peuvent pas apparaître dans une classe de - caractères (mais "\b" a une autre signification à + caractères (mais "\b" a une autre signification à l'intérieur d'une classe de caractères). </para> <para> Une limite de mot est un emplacement dans la chaîne sujet ou un caractère et son suivant ne sont pas en même temps des caractères de mot, ou le contraire (on peut le voir comme - <literal>\w\W</literal> ou <literal>\W\w</literal>), ou encore le + <literal>\w\W</literal> ou <literal>\W\w</literal>), ou encore le premier ou le dernier caractère est un caractère mot. </para> <para> - Les assertions <literal>\A</literal>, <literal>\Z</literal>, et - <literal>\z</literal> diffèrent des méta caractères - <literal>^</literal> et <literal>$</literal> dans la mesure oú + Les assertions <literal>\A</literal>, <literal>\Z</literal>, et + <literal>\z</literal> diffèrent des méta caractères + <literal>^</literal> et <literal>$</literal> dans la mesure où ils ne sont pas dépendants des options, notamment <link linkend="pcre.pattern.modifiers">PCRE_NOTBOL</link> ou <link linkend="pcre.pattern.modifiers">PCRE_NOTEOL</link>. - La différence entre <literal>\Z</literal> et - <literal>\z</literal> tient au fait que <literal>\Z</literal> recherche + La différence entre <literal>\Z</literal> et + <literal>\z</literal> tient au fait que <literal>\Z</literal> recherche les positions avant les nouvelles lignes et à la fin de la - chaîne sujet, tandis que <literal>\z</literal> ne recherche + chaîne sujet, tandis que <literal>\z</literal> ne recherche que la fin de la chaîne. </para> </refsect2> @@ -1683,17 +1705,17 @@ fin de la chaîne sujet. Cela se fait en ajoutant l'option <link linkend="pcre.pattern.modifiers">PCRE_DOLLAR_ENDONLY</link> au moment de la compilation, ou de l'exécution. - Cette option est inopérante sur <literal>\Z</literal>. + Cette option est inopérante sur <literal>\Z</literal>. </para> <para> La signification de <literal>^</literal> peut changer, de manière à l'amener à ce qu'il puisse se trouver immédiatement avant et immédiatement après un caractère de nouvelle - ligne "<literal>\n</literal>". Cela se fait en ajoutant l'option + ligne "<literal>\n</literal>". Cela se fait en ajoutant l'option <link linkend="pcre.pattern.modifiers">PCRE_MULTILINE</link> au moment de la compilation ou de l'exécution. Par exemple, le masque <literal>/^abc$/</literal> accepte la chaîne - "<literal>def\nabc</literal>" uniquement en mode multi-lignes. Par + "<literal>def\nabc</literal>" uniquement en mode multi-lignes. Par conséquent, toutes les parties du masques qui commencent par "<literal>^</literal>" ne sont pas ancrées, en mode multi-lignes. L'option <link linkend="pcre.pattern.modifiers">PCRE_DOLLAR_ENDONLY</link> @@ -1701,10 +1723,10 @@ <link linkend="pcre.pattern.modifiers">PCRE_MULTILINE</link> est choisie. </para> <para> - Notez que les méta caractères <literal>\A</literal>, - <literal>\Z</literal>, et <literal>\z</literal> peuvent servir à + Notez que les méta caractères <literal>\A</literal>, + <literal>\Z</literal>, et <literal>\z</literal> peuvent servir à répérer le début et la fin du sujet, et toutes les - parties du masque qui commenceront par <literal>\A</literal> seront toujours + parties du masque qui commenceront par <literal>\A</literal> seront toujours ancrées, avec l'option <link linkend="pcre.pattern.modifiers">PCRE_MULTILINE</link> ou non. </para> @@ -1779,17 +1801,17 @@ requis dans une classe, il faut l'échapper avec un antislash, ou le faire apparaître à une position ou il ne pourra pas être interprété comme une indication d'intervalle, - c'est à dire au début ou à la fin de la classe. + c'est-à-dire au début ou à la fin de la classe. </para> <para> Il n'est pas possible d'avoir le caractère crochet fermant "<literal>]</literal>" comme fin d'intervalle. Un masque tel que <literal>[W-]46]</literal> est compris comme la classe de caractères contenant deux caractères ("W" et "-") suivi de la chaîne - litérale "46]", ce qui fait qu'il va accepter + littérale "46]", ce qui fait qu'il va accepter "<literal>W46]</literal>" ou "<literal>-46]</literal>". Cependant, si "<literal>]</literal>" est échappé avec un antislash, le - masque <literal>[W-\]46]</literal> est interprété comme + masque <literal>[W-\]46]</literal> est interprété comme une classe d'un seul caractère, contenant un intervalle de caractères. </para> @@ -1798,27 +1820,27 @@ aussi être utilisée pour déterminer les limites de l'intervalle. Les intervalles travaillent sur des séquences ASCII. Ils peuvent aussi être précisées - avec des valeurs numériques, par exemple "<literal>[\000-\037]</literal>". + avec des valeurs numériques, par exemple "<literal>[\000-\037]</literal>". Si cet intervalle inclus des lettres utilisées avec une option d'insensibilité de casse, les majuscules ou minuscules correspondantes seront aussi incluses. Par exemple, "<literal>[C-c]</literal>" - est équivalent é "<literal>[][\^_`wxyzabc]</literal>", + est équivalent é "<literal>[][\^_`wxyzabc]</literal>", avec l'option d'insensibilité de casse. Si la table locale de - caractères est "fr", "<literal>[\xc8-\xcb]</literal>" correspond + caractères est "fr", "<literal>[\xc8-\xcb]</literal>" correspond aux caractères accentués. </para> <para> - Les types de caractères <literal>\d</literal>, - <literal>\D</literal>, <literal>\S</literal>, <literal>\s</literal>, - <literal>\w</literal>, <literal>\W</literal> peuvent aussi intervenir + Les types de caractères <literal>\d</literal>, + <literal>\D</literal>, <literal>\S</literal>, <literal>\s</literal>, + <literal>\w</literal>, <literal>\W</literal> peuvent aussi intervenir dans les classes de caractères. Par exemple, - "<literal>[][\^_`wxyzabc][\dABCDEF]</literal>" acceptera n'importe + "<literal>[][\^_`wxyzabc][\dABCDEF]</literal>" acceptera n'importe quel caractère hexadécimal. Un accent circonflexe peut aussi être utilisé pour spécifier adroitement des ensembles de caractères plus restrictifs : par exemple - <literal>[^\W_]</literal> accepte toutes les lettres et les chiffres, + <literal>[^\W_]</literal> accepte toutes les lettres et les chiffres, mais pas les soulignés. Tous les caractères non alpha- - numériques autres que <literal>\, -, ^</literal> (placés + numériques autres que <literal>\, -, ^</literal> (placés en début de chaîne) et <literal>]</literal> n'ont pas de signification particulière, mais ils ne perdront rien à être échappés. @@ -1909,7 +1931,7 @@ <link linkend="pcre.pattern.modifiers">PCRE_CASELESS</link>. En d'autres termes, activer des séquences d'options dans le corps principal du masque revient à appliquer l'option à tout le masque, sauf - ordre contraire dans les sous-masques. Si il y a plusieurs séquences + ordre contraire dans les sous-masques. S'il y a plusieurs séquences d'options qui portent sur la même option, la dernière s'appliquera. </para> <para> @@ -1962,7 +1984,7 @@ chaîne sujet est acceptée par le masque complet, les sous-masques sont transmis à l'appelant grâce à un vecteur de sous-masques. Les parenthèses ouvrantes sont - comptées de gauche à droite, (commencant à 1). + comptées de gauche à droite, (commençant à 1). Par exemple, soit la chaîne sujet "<literal>le roi soleil</literal>" qui est utilisée avec le masque suivant : <literal>Le ((roi|prince) (soleil|charmant))</literal> les sous-masques @@ -1971,7 +1993,7 @@ </para> <para> L'ubiquité des parenthèses n'est pas toujours simple - d'emploi. Il y a des moments oú regrouper des sous-masques + d'emploi. Il y a des moments où regrouper des sous-masques est nécessaire, sans pour autant capturer la valeur trouvée. Si une parenthèse ouvrante est suivie de "<literal>?:</literal>", le sous-masque ne capture pas la chaîne assortie, et ne sera pas @@ -2019,7 +2041,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\2</emphasis></term> + <term><emphasis>\2</emphasis></term> <listitem> <simpara> Une référence de retour (Voir section suivante) @@ -2045,7 +2067,7 @@ doit être égal ou inférieur au second. Par exemple <literal>z{2,4}</literal> accepte "<literal>zz</literal>", "<literal>zzz</literal>", ou "<literal>zzzz</literal>". L'accolade fermante - n'a pas de signification par elle même. + n'a pas de signification par elle-même. </para> <para> Si le second nombre est omis, mais que la virgule est là, cela @@ -2053,13 +2075,13 @@ et la virgule sont omis, le quantificateur correspond au nombre exact de répétition attendues. Par exemple : accepte n'importe quelle succession d'au moins 3 voyelles minuscules, tandis - que <literal>\d{d}</literal> n'accepte que 8 chiffres exactement. + que <literal>\d{d}</literal> n'accepte que 8 chiffres exactement. </para> <para> - Une accolade ouvrante qui apparaît à une position oú + Une accolade ouvrante qui apparaît à une position où un quantificateur n'est pas accepté, ou si la syntaxe des quantificateurs n'est pas respectée, sera considérée - litérale. Par exemple, "<literal>{,6}</literal>" n'est pas un + littérale. Par exemple, "<literal>{,6}</literal>" n'est pas un quantificateur, mais une chaîne de 4 caractères. </para> <para> @@ -2100,7 +2122,7 @@ <para> Les versions plus anciennes de Perl et PCRE généraient alors une erreur au moment de la compilation. Cependant, étant donné - qu'il existe des situations oú ces constructions peuvent être + qu'il existe des situations où ces constructions peuvent être utiles, ces masques sont désormais autorisés. Cependant, si la répétion du sous-masque ne trouve aucun caractère, la boucle est interrompue. @@ -2113,7 +2135,7 @@ commentaires d'un programme en C. Les commentaires apparaissent entre les séquences <literal>/*....*/</literal> et à l'intérieur de ces délimiteurs, les <literal>*</literal> et <literal>/</literal> - sont autorisés. Appliquer le masque <literal>/\*.*\*/</literal> + sont autorisés. Appliquer le masque <literal>/\*.*\*/</literal> à la chaîne <literal>/* first commet */ not comment /* second comment */</literal> ne peut réussir, car le masque travaille sur toute la chaîne, @@ -2123,14 +2145,14 @@ Cependant, un quantificateur suivi d'un point d'interrogation cesse d'être gourmand, et au contraire, ne recherche que le nombre minimum de répétition. Dans ces conditions, le masque - <literal>/\*.*?\*/</literal> trouvera bien les commentaires du code + <literal>/\*.*?\*/</literal> trouvera bien les commentaires du code C. La signification des autres quantificateurs n'est pas changée. </para> <para> Attention à ne pas confondre l'utilisation du point d'interrogation - ici avec son utilisation comme quantificateur lui même. + ici avec son utilisation comme quantificateur lui-même. A cause cette ambiguité, il peut apparaître des situations - oú il faut le doubler : <literal>\d??\d</literal>. Ce masque va + où il faut le doubler : <literal>\d??\d</literal>. Ce masque va tenter de lire un seul chiffre, mais le cas échéant, il acceptera 2 chiffres pour permettre à la recherche d'aboutir. Si l'option <link linkend="pcre.pattern.modifiers">PCRE_UNGREEDY</link> @@ -2152,12 +2174,12 @@ Si un masque commence par <literal>..*</literal> ou <literal>.{0,}</literal> et que l'option <link linkend="pcre.pattern.modifiers">PCRE_DOTALL</link> (équivalent en Perl à /s) est - activée, c'est à dire en autorisant le remplacement des nouvelles + activée, c'est-à-dire en autorisant le remplacement des nouvelles lignes par un méta-caractère, alors le masque est implicitement ancré, car tout ce qui suit va être mangé par la première séquence, et se comportera comme si le masque se terminait par le méta caractère - <literal>\A</literal>. Dans le cas oú on sait d'avance qu'il + <literal>\A</literal>. Dans le cas où on sait d'avance qu'il n'y aura pas de caractère de nouvelle ligne, activer l'option <link linkend="pcre.pattern.modifiers">PCRE_DOTALL</link> et commencer le masque par <literal>.*</literal> permet d'optmiser le masque. @@ -2167,7 +2189,7 @@ explicitement le masque. Lorsqu'un sous-masque capturant est répété, la valeur capturée est la dernière. Par exemple, après que - "<literal>(inter[net]{3}\s*)+</literal>" ai été + "<literal>(inter[net]{3}\s*)+</literal>" ai été appliqué à "<literal>internet interne</literal>", la valeur de la chaîne capturée est "<literal>interne</literal>". </para> @@ -2192,14 +2214,14 @@ Cependant, si le nombre décimal suivant l'antislash est plus petit que 10, il sera toujours considéré comme une référence arrière, et cela - générera une erreur si le nombre de capture + génèrera une erreur si le nombre de capture n'est pas suffisant. En d'autres termes, il faut qu'il existe suffisamment de parenthèses ouvrantes à gauche de la référence, surtout si la référence est inférieure à 10. </para> <para> - Reportez vous à la section "antislash" pour avoir de + Reportez-vous à la section "antislash" pour avoir de plus amples détails à propos du nombre de chiffres qui suivent l'antislash. </para> @@ -2208,12 +2230,12 @@ été capturé par un sous-masque dans le masque courant, plutôt que remplace le sous-masque lui-même. Ainsi <literal>(calme|rapide)</literal> et - <literal>\1ment</literal> trouvera "<literal>calme et calmement</literal>" + <literal>\1ment</literal> trouvera "<literal>calme et calmement</literal>" et "<literal>rapide et rapidement</literal>", mais pas "<literal>calme et rapidement</literal>". Si la recherche tient compte de la casse, alors la casse de la chaîne capturée sera importante. Par exemple, - <literal>((?i)rah)\s+\1</literal> trouve "<literal>rah rah</literal>" + <literal>((?i)rah)\s+\1</literal> trouve "<literal>rah rah</literal>" et "<literal>RAH RAH</literal>", mais pas "<literal>RAH rah</literal>", même si le sous-masque capturant initial ne tenait pas compte de la casse. @@ -2222,7 +2244,7 @@ Il peut y avoir plusieurs références arrières dans le même sous-masque. Si un sous-masque n'a pas été utilisé dans une recherche, alors les références - arrières échoueront. Par exemple "<literal>(a|(bc))\2</literal>" + arrières échoueront. Par exemple "<literal>(a|(bc))\2</literal>" ne réussira jamais si la chaîne sujet commence par "<literal>a</literal>" plutôt que par "<literal>bc</literal>". </para> @@ -2242,10 +2264,10 @@ arrière qui intervient à l'intérieur de parenthèses auquel elle fait référence échouera dès que le sous-masque sera utilisé. Par exemple, - <literal>(a\1)</literal> échouera toujours. Cependant, ces + <literal>(a\1)</literal> échouera toujours. Cependant, ces références peuvent être utiles dans les sous-masques répétitifs. Par exemple, le masque - "<literal>(a|b\1)+</literal>" pourra convenir pour "<literal>a</literal>", + "<literal>(a|b\1)+</literal>" pourra convenir pour "<literal>a</literal>", "<literal>aba</literal>", "<literal>ababaa</literal>", etc.... </para> <para> @@ -2254,7 +2276,7 @@ Pour que cela fonctionne, il faut que la première itération n'ai pas besoin d'utiliser la référence arrière. Cela arrive avec les alternatives, comme dans - l'exemple ci dessus, ou avec un quantificateur de minimum 0. + l'exemple ci-dessus, ou avec un quantificateur de minimum 0. </para> </refsect2> <refsect2 id="regexp.reference.assertions"> @@ -2264,23 +2286,23 @@ précédent celui qui est en cours d'étude. Ce test ne consomme par de caractère (ie, on ne déplace pas le pointeur de caractères). Les assertions simples sont - codées avec <literal>\b</literal>, <literal>\B</literal>, - <literal>\A</literal>, <literal>\Z</literal>, <literal>\z</literal>, + codées avec <literal>\b</literal>, <literal>\B</literal>, + <literal>\A</literal>, <literal>\Z</literal>, <literal>\z</literal>, <literal>^</literal> et <literal>$</literal>, et sont décrites précédemment. </para> <para> Il existe cependant un type d'assertions plus complexes, codées sous la forme de sous-masques. Il en existe deux types : celles qui - travaillent au-dela de la position courante (<literal>\w+(?=;)</literal>), - et celles qui travaillent en deça (<literal>(?!)\w+</literal>). + travaillent au-delà de la position courante (<literal>\w+(?=;)</literal>), + et celles qui travaillent en deça (<literal>(?!)\w+</literal>). </para> <para> Une assertion se comporte comme un sous-masque, hormis le fait qu'elle ne déplace pas le pointeur de position. Les assertions avant commencent par <literal>(?=</literal> pour les assertions positives, et par <literal>(?!</literal>, pour les assertions négatives. Par exemple : - <literal>\w+(?=;)</literal> s'assure qu'un mot est suivi d'un point-virgule, + <literal>\w+(?=;)</literal> s'assure qu'un mot est suivi d'un point-virgule, mais n'inclus pas le point virgule dans la capture. D'autre part, <literal>(?!foo)bar</literal> en est proche, mais ne trouve pas une occurrence de "<literal>bar</literal>" qui soit précédée @@ -2327,7 +2349,7 @@ </para> <para> Plusieurs assertions peuvent intervenir successivement. Par exemple, - le masque <literal>(?<=\d{3})(?<!999)foo</literal> recherche + le masque <literal>(?<=\d{3})(?<!999)foo</literal> recherche les chaînes "<literal>foo</literal>" précédées par trois chiffres qui ne sont pas "999". Notez que chaque assertion est appliquées indépendemment, au même point de @@ -2340,7 +2362,7 @@ les trois suivants étant différents de "<literal>999</literal>". Par exemple, ce masque n'acceptera pas la chaîne "<literal>123abcfoo</literal>". Pour ce faire, il faut utiliser le masque - suivant : <literal>(?<=\d{3}...)(?<!999)foo</literal>. Dans ce + suivant : <literal>(?<=\d{3}...)(?<!999)foo</literal>. Dans ce masque, la première assertion vérifie les six premiers caractères, s'assure que les trois premiers sont des entiers, et la deuxième assertion s'assure que les trois derniers @@ -2353,7 +2375,7 @@ précédées par "<literal>bar</literal>", qui, à son tour, n'est pas précédé par "<literal>foo</literal>". Au contraire, - <literal>(?<=\d{3}(?!999)...)foo</literal> est un autre masque, + <literal>(?<=\d{3}(?!999)...)foo</literal> est un autre masque, qui recherche les caractères "<literal>foo</literal>", précédés par trois chiffres, suivis trois autres caractères qui ne forment pas "<literal>999</literal>". @@ -2380,7 +2402,7 @@ plus tôt, si on pense qu'il n'est pas besoin d'aller plus loin. </para> <para> - Considérons par exemple, le masque <literal>\d+foo</literal> + Considérons par exemple, le masque <literal>\d+foo</literal> appliqué à la ligne <literal>123456bar</literal>. Après avoir tenté d'utiliser les 6 chiffres suivi de "<literal>foo</literal>" qui font échouer, l'action habituelle @@ -2393,8 +2415,8 @@ n'a pas besoin d'être réévaluée à chaque tentative. Ceci conduirait à ce que la recherche échoue immédiatement après le premier test. - Ces assertions ont leur propre notation, commencant avec - <literal>(?></literal> comme ceci : <literal>(?>\d+)bar</literal>. + Ces assertions ont leur propre notation, commençant avec + <literal>(?></literal> comme ceci : <literal>(?>\d+)bar</literal>. </para> <para> Ce type de parenthèses verrouille le sous-masque qu'il contient @@ -2409,10 +2431,10 @@ Les sous-masques uniques ne sont pas capturants. Des cas simples comme ceux présentés ci-dessus peuvent être pris comme des situations maximisantes, qui réservent le maximum de - caractères. En effet, alors que <literal>\d+</literal> et - <literal>\d+?</literal> ajustent le nombre de chiffres trouvés + caractères. En effet, alors que <literal>\d+</literal> et + <literal>\d+?</literal> ajustent le nombre de chiffres trouvés de manière à laisser la possibilité au masque de - réussir, <literal>(?>\d+)</literal> ne peut retenir que la + réussir, <literal>(?>\d+)</literal> ne peut retenir que la séquence entière de chiffres. Cette construction peut contenir un nombre arbitraire de sous-masques complexes, et ils peuvent être imbriqués. @@ -2452,7 +2474,7 @@ temps de calcul trop long. </para> <para> - Le masque <literal>(\D+|<\d+>)*[!?]</literal> recherche un nombre + Le masque <literal>(\D+|<\d+>)*[!?]</literal> recherche un nombre illimité de sous-chaînes, qui contiennent soit des non-chiffres, soit des chiffres inclus dans <>, suivi soit par <literal>!</literal> ou par <literal>?</literal>. Lorsqu'il trouve @@ -2470,7 +2492,7 @@ attendu, et s'aperçoit rapidement qu'il n'y a pas ce caractère). </para> <para> - Si le masque utilisé est <literal>((?>\D+)|&;lt;\d+>)*[!?]</literal> + Si le masque utilisé est <literal>((?>\D+)|&;lt;\d+>)*[!?]</literal> les séquences de chiffres ne peuvent pas être trouvées, et l'échec intervient rapidement. </para> @@ -2502,14 +2524,14 @@ significatifs pour le rendre plus compréhensible (on supposera l'option <link linkend="pcre.pattern.modifiers">PCRE_EXTENDED</link> activée) et qui est divisé en trois parties - pour simplifier les explications : <literal>( \( )? [^()]+ (?(1) \) )</literal>. + pour simplifier les explications : <literal>( \( )? [^()]+ (?(1) \) )</literal>. </para> <para> La première partie recherche une parenthèse ouvrante optionnelle, et si elle existe, elle est capturée. La deuxième partie recherche un séquence de caractères qui ne contiennent pas de parenthèses. La troisième partie est - conditionnée à la première, et s'assure que si il + conditionnée à la première, et s'assure que s'il y avait une parenthèse ouvrante, il en existe une fermante. Si une parenthèse ouvrante a été trouvée, elle a été capturée, et donc la première capture @@ -2524,7 +2546,7 @@ arrière ou avant. Considérons le masque suivant (même conditions que le précédent) et avec deux alternatives en seconde ligne : - <literal>(?(?=[^a-z]*[a-z])\d{2}[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} )</literal>. + <literal>(?(?=[^a-z]*[a-z])\d{2}[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} )</literal>. La condition est une assertion avant positive, qui recherche une séquence optionnelle de caractères non-lettre. En d'autres termes, elle teste la presence d'au moins une lettre dans la chaîne @@ -2539,7 +2561,7 @@ <title>Commentaires</title> <simpara> La séquence <literal>(?#</literal> marque le début d'un commentaire, - qui se termine à la prochaîne parenthèse fermante. Les + qui se termine à la prochaine parenthèse fermante. Les parenthèses imbriquées ne sont pas autorisées. Les caractères entre ces délimiteurs ne jouent alors aucun rôle dans le masque. @@ -2549,7 +2571,7 @@ est activée, les caractères dièses <literal>#</literal> non échappés en dehors d'une classe de caractères introduisent un commentaire qui continuera jusqu'à - la prochaîne ligne dans le masque. + la prochaine ligne dans le masque. </simpara> </refsect2> <refsect2 id="regexp.reference.recursive"> @@ -2568,7 +2590,7 @@ problème des parenthèses (l'option <link linkend="pcre.pattern.modifiers">PCRE_EXTENDED</link> est utilisée pour ignorer les espaces) : - <literal>\( ( (?>[^()]+) | (?R) )* \)</literal> + <literal>\( ( (?>[^()]+) | (?R) )* \)</literal> </para> <para> Tout d'abord, le masque recherche une parenthèse ouvrante. Puis, @@ -2602,9 +2624,9 @@ capturante est "<literal>ef</literal>", qui est la dernière valeur lue au niveau supérieur. Si de nouvelles parenthèses sont ajoutées, par exemple : - <literal>\( ( ( (?>[^()]+) | (?R) )* ) \)</literal> + <literal>\( ( ( (?>[^()]+) | (?R) )* ) \)</literal> alors la chaîne capturée est "<literal>ab(cd)ef</literal>", - c'est à dire le contenu de la parenthèses capturant + c'est-à-dire le contenu de la parenthèses capturant de plus haut niveau. S'il y a plus de 15 parenthèses capturantes dans une chaîne, PCRE doit utiliser plus de mémoire pour stocker ces données. S'il ne @@ -2643,7 +2665,7 @@ de ces nouvelles lignes, et non pas seulement au début de la chaîne sujet. Par exemple, le masque, <literal>(.*)second</literal> acceptera la chaîne - "<literal>premier \net second</literal>" (avec "<literal>\n</literal>" + "<literal>premier \net second</literal>" (avec "<literal>\n</literal>" qui remplace la nouvelle ligne), et la première chaîne capturée sera "<literal>et</literal>". </para> @@ -2683,7 +2705,7 @@ annoncé immédiatement. Sinon, il n'y a pas d'optimisation dans la recherche. Vous pouvez voir la différence de comportement avec le masque suivant : - <literal>(a+)*\d</literal>. Le premier retourne un échec + <literal>(a+)*\d</literal>. Le premier retourne un échec quasi-immédiatement, s'il est appliqué à une ligne de "<literal>a</literal>", alors que le second masque prend un temps significatif pour une chaîne de plus de
Index: phpdoc/fr/functions/pcre.xml diff -u phpdoc/fr/functions/pcre.xml:1.24 phpdoc/fr/functions/pcre.xml:1.25 --- phpdoc/fr/functions/pcre.xml:1.24 Sat Jul 7 18:22:19 2001 +++ phpdoc/fr/functions/pcre.xml Mon Jul 23 04:13:01 2001 @@ -7,7 +7,7 @@ fort à celle de Perl. Les expressions seront entourées de délimiteurs, slash (/), par exemple. N'importe quel caractère peut servir de délimiteur, tant qu'il - n'est pas alpha-numérique ou n'est pas un antislash (\). + n'est pas alpha-numérique ou n'est pas un antislash (\). Si un délimiteur doit être utilisé dans l'expression, il faudra l'échapper avec un antislash. Depuis PHP 4.0.4, vous pouvez utiliser les délimiteurs @@ -22,10 +22,10 @@ <example> <title>Exemples de masques valides</title> <itemizedlist> - <listitem><simpara><literal>/<\/\w+>/</literal></simpara></listitem> - <listitem><simpara><literal>|(\d{3})-\d+|Sm</literal></simpara></listitem> + <listitem><simpara><literal>/<\/\w+>/</literal></simpara></listitem> + <listitem><simpara><literal>|(\d{3})-\d+|Sm</literal></simpara></listitem> <listitem><simpara><literal>/^(?i)php[34]/</literal></simpara></listitem> - <listitem><simpara><literal>{^\s+(\s+)?$}</literal></simpara></listitem> + <listitem><simpara><literal>{^\s+(\s+)?$}</literal></simpara></listitem> </itemizedlist> </example> </para> @@ -40,12 +40,12 @@ </listitem> <listitem> <simpara> - /\w+\s*\w+/J - option 'J' inconnue + /\w+\s*\w+/J - option 'J' inconnue </simpara> </listitem> <listitem> <simpara> - 1-\d3-\d3-\d4| - délimiteur initial manquant + 1-\d3-\d3-\d4| - délimiteur initial manquant </simpara> </listitem> </itemizedlist> @@ -102,7 +102,7 @@ <title>Extraction d'un numéro de page d'une chaîne.</title> <programlisting role="php"> <?php -if (preg_match("/page\s+#(\d+)/i", "Aller à la page numéro 9.", $parts)) +if (preg_match("/page\s+#(\d+)/i", "Aller à la page numéro 9.", $parts)) print "La page suivante est $parts[1]"; else print "Page introuvable."; @@ -113,15 +113,15 @@ <title>Trouve le mot "web"</title> <programlisting role="php"> <?php -// \b, dans le masque, indique une limite de mot, de façon à ce que le mot +// \b, dans le masque, indique une limite de mot, de façon à ce que le mot // "web" uniquement soit repéré, et pas seulement des parties de mots comme // dans "webbing" ou "cobweb" -if (preg_match ("/\bweb\b/i", "PHP est le meilleur langage de script du web.")) { +if (preg_match ("/\bweb\b/i", "PHP est le meilleur langage de script du web.")) { print "Un mot a été trouvé."; } else { print "Un mot n'a pas été trouvé."; } -if (preg_match ("/\bweb\b/i", "PHP est le meilleur langage de script pour les webagency.")) { +if (preg_match ("/\bweb\b/i", "PHP est le meilleur langage de script pour les webagency.")) { print "Un mot a été trouvé."; } else { print "Un mot n'a pas été trouvé."; @@ -134,12 +134,12 @@ <programlisting role="php"> <?php // repérer le nom de l'hôte dans l'URL -preg_match("/^(http:\/\/)?([^\/]+)/i", +preg_match("/^(http:\/\/)?([^\/]+)/i", "http://www.php.net/index.html", $matches); $host = $matches[2]; // repérer les deux derniers segments du nom de l'hôte -preg_match("/[^\.\/]+\.[^\.\/]+$/",$host,$matches); -echo "Le nom de domaine est : ".$matches[0]."\n"; +preg_match("/[^\.\/]+\.[^\.\/]+$/",$host,$matches); +echo "Le nom de domaine est : ".$matches[0]."\n"; ?> </programlisting> </example> @@ -147,7 +147,8 @@ <computeroutput> Le nom de domaine est : php.net </computeroutput> - Voir aussi <function>preg_match_all</function>, + Voir aussi + <function>preg_match_all</function>, <function>preg_replace</function> et <function>preg_split</function>. </para> @@ -197,8 +198,8 @@ <programlisting role="php"> <?php preg_match_all("|<[^>]+>(.*)</[^>]+>|U", "<b>example: </b><div align=left>a test</div>", $out, PREG_PATTERN_ORDER); -print $out[0][0].", ".$out[0][1]."\n"; -print $out[1][0].", ".$out[1][1]."\n"; +print $out[0][0].", ".$out[0][1]."\n"; +print $out[1][0].", ".$out[1][1]."\n"; ?> </programlisting> </informalexample> @@ -206,7 +207,7 @@ <informalexample> <literallayout> <computeroutput> -<b>exemple: </b>, <div align=left>ceci est un test</div> +<b>exemple: </b>, <div align=left>ceci est un test</div> exemple: , ceci est un test </computeroutput> </literallayout> @@ -229,8 +230,8 @@ <programlisting role="php"> <?php preg_match_all("|<[^>]+>(.*)</[^>]+>|U", "<b>exemple: </b><div align=left>un test</div>", $out, PREG_SET_ORDER); -print $out[0][0].", ".$out[0][1]."\n"; -print $out[1][0].", ".$out[1][1]."\n"; +print $out[0][0].", ".$out[0][1]."\n"; +print $out[1][0].", ".$out[1][1]."\n"; ?> </programlisting> </informalexample> @@ -258,8 +259,9 @@ utilisé par défaut. </para> <para> - Retourne le nombre de résultat qui satisfont le masque - complet, ou &false; en cas d'échec ou d'erreur. + <function>preg_match_all</function> retourne le nombre de + résultat qui satisfont le masque complet, ou &false; + en cas d'échec ou d'erreur. </para> <para> <example> @@ -268,7 +270,7 @@ </title> <programlisting role="php"> <?php -preg_match_all("/\(? (\d{3})? \)? (?(1) [\-\s] ) \d{3}-\d{4}/x", + preg_match_all("/\(? (\d{3})? \)? (?(1) [\-\s] ) \d{3}-\d{4}/x", "Appelez 555-1212 ou 1-800-555-1212", $phones); ?> </programlisting> @@ -279,19 +281,19 @@ <title>Recherche les couples de balises HTML (gourmand)</title> <programlisting role="php"> <?php -// Cet exemple utilise les références arrières (\\2). +// Cet exemple utilise les références arrières (\\2). // Elles indiquent à l'analyseur qu'il doit trouver quelquechose qu'il // a déjà repéré un peu plus tôt // le nombre 2 indique que c'est le deuxième jeu de parenthèses -// capturante qui doit être utilisé (ici, ([\w]+)). +// capturante qui doit être utilisé (ici, ([\w]+)). // L'antislash est nécessaire ici, car la chaîne est entre guillemets doubles $html = "<B>Texte en gras</B><a href=salut.html>clique moi</?> -preg_match_all ("/(<([\w]+)[?>]?>)(.*)(<\/\\?>)/", $html, $matches); +preg_match_all ("/(<([\w]+)[?>]?>)(.*)(<\/\\?>)/", $html, $matches); for ($i=0; $i< count($matches[0]); $i++) { - echo "trouvé: ".$matches[0][$i]."\n"; - echo "partie 1: ".$matches[1][$i]."\n"; - echo "partie 2: ".$matches[3][$i]."\n"; - echo "partie 3: ".$matches[4][$i]."\n\n"; + echo "trouvé: ".$matches[0][$i]."\n"; + echo "partie 1: ".$matches[1][$i]."\n"; + echo "partie 2: ".$matches[3][$i]."\n"; + echo "partie 3: ".$matches[4][$i]."\n\n"; } ?> </programlisting> @@ -309,7 +311,8 @@ </computeroutput> </para> <simpara> - Voir aussi <function>preg_match</function>, + Voir aussi + <function>preg_match</function>, <function>preg_replace</function> et <function>preg_split</function>. </simpara> @@ -342,15 +345,15 @@ </para> <para> <parameter>replacement</parameter> peut contenir des références - de la forme <literal>\\<replaceable>n</replaceable></literal> ou, + de la forme <literal>\\<replaceable>n</replaceable></literal> ou, depuis PHP 4.0.4) <literal><replaceable>$n</replaceable></literal>. Cette dernière forme est recommandée. Ces références seront remplacées par le texte capturé par la <replaceable>n</replaceable>'-ième parenthèse capturante du masque. <replaceable>n</replaceable> peut prendre des valeurs de 0 à - 99, et <literal>\\0</literal> ou <literal>$0</literal>, correspondent + 99, et <literal>\\0</literal> ou <literal>$0</literal>, correspondent au texte de qui satisfait le masque complet. Les parenthèses - ouvrantes sont comptées de gauche à droite (en commencant + ouvrantes sont comptées de gauche à droite (en commençant à 1) pour déterminer le numéro de parenthèse capturante. </para> @@ -383,7 +386,7 @@ <literal>/e</literal> force <function>preg_replace</function> à traiter <parameter>replacement</parameter> comme du code PHP une fois que les substitutions adéquates ont - été faites. Conseil :assurez vous que + été faites. Conseil :assurez-vous que <parameter>replacement</parameter> est un code PHP valide, car sinon, PHP trouvera une erreur d'analyse (parse error) dans cette ligne. </para> @@ -400,9 +403,9 @@ <title>Remplacement de plusieurs valeurs</title> <programlisting role="php"> <?php -$patterns = array ("/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/", - "/^\s*{(\w+)}\s*=/"); -$replace = array ("\\3/\\4/\\1\\2", "$\\1 ="); +$patterns = array ("/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/", + "/^\s*{(\w+)}\s*=/"); +$replace = array ("\\3/\\4/\\1\\2", "$\\1 ="); print preg_replace ($patterns, $replace, "{startDate} = 1999-5-27"); ?> </programlisting> @@ -415,7 +418,7 @@ <title>Utilisation de l'option /e </title> <programlisting role="php"> <?php -preg_replace("/(<\/?)(\w+)([^>]*>/e", "'\\1'.strtoupper('\\2').'\\3'", $html_body); + preg_replace("/(<\/?)(\w+)([^>]*>/e", "'\\1'.strtoupper('\\2').'\\3'", $html_body); ?> </programlisting> <para> @@ -428,12 +431,12 @@ <?php // $document contient un document HTML // Ce script va effacer les balises HTML, les javascript -// et les espaces. Il remplace aussi queqlues entitées HTML +// et les espaces. Il remplace aussi quelques entités HTML // courante en leur équivalent texte. $search = array ("'<script[?>]*?>.*?</script>'si", // Supprime le javascript - "'<[\/\!]*?[^<?>]*?>'si", // Supprime les balises HTML - "'([\r\n])[\s]+'", // Supprime les espaces - "'&(quot|#34);'i", // Supprime les entitees HTML + "'<[\/\!]*?[^<?>]*?>'si", // Supprime les balises HTML + "'([\r\n])[\s]+'", // Supprime les espaces + "'&(quot|#34);'i", // Supprime les entites HTML "'&(amp|#38);'i", "'&(lt|#60);'i", "'&(gt|#62);'i", @@ -442,11 +445,11 @@ "'&(cent|#162);'i", "'&(pound|#163);'i", "'&(copy|#169);'i", - "'&#(\d+);'e"); // Evaluation comme PHP + "'&#(\d+);'e"); // Evaluation comme PHP $replace = array ("", "", - "\\1", - "\"", + "\\1", + "\"", "&", "<", ?>", @@ -455,7 +458,7 @@ chr(162), chr(163), chr(169), - "chr(\\1)"); + "chr(\\1)"); $text = preg_replace ($search, $replace, $document); ?> </programlisting> @@ -468,9 +471,10 @@ </para> </note> <para> - Voir aussi <function>preg_match</function>, - <function>preg_match_all</function> - et <function>preg_split</function>. + Voir aussi + <function>preg_match</function>, + <function>preg_match_all</function> et + <function>preg_split</function>. </para> </refsect1> </refentry> @@ -572,7 +576,7 @@ <note> <para> Le paramètre <parameter>flags</parameter> a été - ajouté dans PHP Beta 3. + ajouté en PHP Beta 3. </para> </note> <para> @@ -581,25 +585,33 @@ <programlisting role="php"> <?php // scinde la phrase grâce aux virgules et espacements -// ce qui inclus les " ", \r, \t, \n et \f -$keywords = preg_split ("/[\s,]+/", "langage hypertexte, programmation"); +// ce qui inclus les " ", \r, \t, \n et \f +$keywords = preg_split ("/[\s,]+/", "langage hypertexte, programmation"); ?> </programlisting> </example> </para> <para> - Scinder une chaîne en caractères - </para> - <programlisting role="php"> + <example> + <title>Scinder une chaîne en caractères</title> + <programlisting role="php"> <?php $str = 'string'; $chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY); print_r($chars); ?> - </programlisting> + </programlisting> + </example> + </para> <para> - Voir aussi <function>preg_match</function>, <function>preg_match_all</function> - et <function>preg_replace</function>. + Voir aussi + <function>explode</function>, + <function>spliti</function>, + <function>split</function>, + <function>implode</function>, + <function>preg_match</function>, + <function>preg_match_all</function> et + <function>preg_replace</function>. </para> </refsect1> </refentry> @@ -637,7 +649,7 @@ </para> <para> Les caractères spéciaux qui seront échappés : - <screen>. \\ + * ? [ ^ ] $ ( ) { } = ! < > | :</screen> + <screen>. \\ + * ? [ ^ ] $ ( ) { } = ! < > | :</screen> </para> <para> <example> @@ -646,7 +658,7 @@ <?php $keywords = "$40 pour un g3/400"; $keywords = preg_quote ($keywords, "/"); -echo $keywords; // retourne \$40 pour un g3\/400 +echo $keywords; // retourne \$40 pour un g3\/400 ?> </programlisting> </example> @@ -699,7 +711,7 @@ <programlisting role="php"> <?php // recherche les nombres à virgule flottante -preg_grep("/^(\d+)?\.\d+$/", $array); +preg_grep("/^(\d+)?\.\d+$/", $array); ?> </programlisting> </example> @@ -716,7 +728,7 @@ <refsect1> <title>Description</title> <para> - Les options de PCRE sont listées ci dessous. Les noms entre + Les options de PCRE sont listées ci-dessous. Les noms entre parenthèses sont les noms internes à PCRE. </para> <para> @@ -740,7 +752,7 @@ valable qu'une seule fois, au début de la ligne, et le méta caractère "fin de ligne " ($) ne sera valable qu'à la fin de la chaîne, ou avant le retour chariot - final (à moins que l'option E ne soit activée). C'est le + final (à moins que l'option D ne soit activée). C'est le même fonctionnement qu'en Perl. </simpara> <simpara> @@ -749,9 +761,9 @@ suivant et précédent immédiatement un caractère de nouvelle ligne, en plus du début et de la fin de la chaîne. C'est le même - fonctionnement que l'option Perl /m. Si il n'y a pas de - caractère de nouvelle ligne "\n" dans la chaîne sujet, - ou si il n'y a aucune occurrence de ^ ou $ dans le masque, cette option + fonctionnement que l'option Perl /m. S'il n'y a pas de + caractère de nouvelle ligne "\n" dans la chaîne sujet, + ou s'il n'y a aucune occurrence de ^ ou $ dans le masque, cette option ne sert à rien. </simpara> </listitem> @@ -810,8 +822,7 @@ <term><emphasis>A</emphasis> (PCRE_ANCHORED)</term> <listitem> <simpara> - Avec cette option, le masque est ancré de force, c'est - à dire que le masque doit s'appliquer entre le début + Avec cette option, le masque est ancré de force, c'est-à-dire que le masque doit s'appliquer entre le début et la fin de la chaîne sujet pour être considéré comme trouvé. Il est possible de réaliser le même effet en @@ -872,11 +883,22 @@ permettant la réservation de ces combinaisons pour des ajouts fonctionnels ultérieurs. Par défaut, comme en Perl, les antislash suivis d'une lettre sans signification particulière - sont traités comme des valeurs litérales. Actuellement, + sont traités comme des valeurs littérales. Actuellement, cette option ne déclenche pas d'autres fonctions. </simpara> </listitem> </varlistentry> + <varlistentry> + <term><emphasis>u</emphasis> (PCRE_UTF8)</term> + <listitem> + <simpara> + Cette option inactive les fonctionnalités additionnelles de + PCRE qui ne sont pas compatibles avec Perl. Les chaînes sont + traitées comme des chaînes UTF-8. Cette option est disponible en + PHP 4.0.7 et plus récent. + </simpara> + </listitem> + </varlistentry> </variablelist> </blockquote> </para> @@ -914,11 +936,11 @@ &true; pour les espaces, les retours chariot, les nouvelles lignes, les formfeed, les tabulations verticales et horizontales. Le Perl 5 n'accepte plus la tabulation verticale comme caractère - d'espacement. La séquence \v qui était dans la documentation + d'espacement. La séquence \v qui était dans la documentation Perl depuis longtemps n'a jamais été reconnue. Cependant, la tabulation verticale elle-même était reconnue comme un caractère d'espacement jusqu'à la version 5.002. Avec les - version 5.004 et 5.005, l'option \s l'ignore. + version 5.004 et 5.005, l'option \s l'ignore. </simpara> </listitem> <listitem> @@ -946,21 +968,21 @@ chaîne de recherche, ils ne sont pas acceptés dans le masque, car le masque est utilisé comme une chaîne C standard, terminée par le caractère nul. Il faut donc utiliser la - séquence d'échappement "\0" dans le masque pour rechercher + séquence d'échappement "\0" dans le masque pour rechercher les caractères nul. </simpara> </listitem> <listitem> <simpara> Les séquence d'échappement suivantes ne sont pas supportées - par le Perl: \l, \u, \L, \U, \E, \Q. En fait, elles sont implémentées + par le Perl: \l, \u, \L, \U, \E, \Q. En fait, elles sont implémentées par la gestion intrinsèque de chaînes du Perl, et ne font pas partie de ses caractères spéciaux. </simpara> </listitem> <listitem> <simpara> - L'assertion \G du Perl n'est pas supportée car elle n'est pas pertinente + L'assertion \G du Perl n'est pas supportée car elle n'est pas pertinente pour faire des recherches avec des masques uniques. </simpara> </listitem> @@ -1010,7 +1032,7 @@ activé, et que <link linkend="pcre.pattern.modifiers">PCRE_MULTILINE</link> n'est pas activé, le méta caractère <literal>$</literal> ne s'applique qu'à la fin - physqiue de la chaîne, et non pas avant les caractères + physique de la chaîne, et non pas avant les caractères de nouvelle ligne. </simpara> </listitem> @@ -1026,7 +1048,7 @@ (d) SI <link linkend="pcre.pattern.modifiers">PCRE_UNGREEDY</link> est activé, la "gourmandise" des quantificateurs de répétition est inversées, ce qui est rend non - gourmand par défaut, mais si ils sont suivis de ?, il seront + gourmand par défaut, mais s'ils sont suivis de ?, il seront gourmands. </simpara> </listitem> @@ -1052,7 +1074,7 @@ </simpara> <simpara> Une expression régulière est un masque, appliqué à - une chaîne sujet, de gauche à droite. La plus part des + une chaîne sujet, de gauche à droite. La plupart des caractères se représentent eux-mêmes. Un exemple trivial : un masque qui serait "<literal>Le rapide renard gris</literal>", pourra correspondre à une partie de la chaîne sujet qui sera @@ -1072,7 +1094,7 @@ </para> <para> Il y a deux sortes de méta-caractères : ceux qui sont - reconnus n'importe oú dans un masque, hormis entre crochets, + reconnus n'importe où dans un masque, hormis entre crochets, et ceux qui sont reconnus entre crochets. </para> <para> @@ -1199,7 +1221,7 @@ les seuls méta caractères autorisés sont : <variablelist> <varlistentry> - <term><emphasis>\</emphasis> Antislash</term> + <term><emphasis>\</emphasis> Antislash</term> <listitem> <simpara> Caractère d'échappement, avec de multiples usages @@ -1249,13 +1271,13 @@ à l'intérieur et à l'extérieur des classes de caractères. Par exemple, pour recherche le caractère étoile "<literal>*</literal>", il faut - écrire dans le masque : "<literal>\*</literal>". Cela + écrire dans le masque : "<literal>\*</literal>". Cela s'applique dans tous les cas, que le caractère qui suive soit un méta-caractère ou non. C'est un moyen sûr pour s'assurer qu'un caractère sera recherché - pour sa valeur litérale, plutôt que pour sa valeur + pour sa valeur littérale, plutôt que pour sa valeur spéciale. En particulier, pour rechercher les antislash, - il faut écrire : "<literal>\\</literal>". + il faut écrire : "<literal>\\</literal>". </para> <para> Si un masque est utilisé avec l'option @@ -1279,15 +1301,15 @@ plutôt que le caractère binaire qu'elle représente : <variablelist> <varlistentry> - <term><emphasis>\a</emphasis></term> + <term><emphasis>\a</emphasis></term> <listitem> <simpara> - alarme, c'est à dire le caractère BEL (hex 07) + alarme, c'est-à-dire le caractère BEL (hex 07) </simpara> </listitem> </varlistentry> <varlistentry> - <term><emphasis>\cx</emphasis></term> + <term><emphasis>\cx</emphasis></term> <listitem> <simpara> "control-x", avec x qui peut être n'importe quel caractère. @@ -1295,7 +1317,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\e</emphasis></term> + <term><emphasis>\e</emphasis></term> <listitem> <simpara> escape (hex 1B) @@ -1303,7 +1325,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\f</emphasis></term> + <term><emphasis>\f</emphasis></term> <listitem> <simpara> formfeed (hex 0C) @@ -1311,7 +1333,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\n</emphasis></term> + <term><emphasis>\n</emphasis></term> <listitem> <simpara> nouvelle ligne (hex 0A) @@ -1319,7 +1341,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\r</emphasis></term> + <term><emphasis>\r</emphasis></term> <listitem> <simpara> retour chariot (hex 0D) @@ -1327,7 +1349,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\t</emphasis></term> + <term><emphasis>\t</emphasis></term> <listitem> <simpara> tabulation (hex 09) @@ -1335,7 +1357,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\xhh</emphasis></term> + <term><emphasis>\xhh</emphasis></term> <listitem> <simpara> caractère en hexadécimal, de code hh @@ -1343,7 +1365,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\ddd</emphasis></term> + <term><emphasis>\ddd</emphasis></term> <listitem> <simpara> caractère en octal, de code ddd, ou référence arrière @@ -1353,30 +1375,30 @@ </variablelist> </para> <para> - Dans la séquence "<literal>\cx</literal>" si "<literal>x</literal>" + Dans la séquence "<literal>\cx</literal>" si "<literal>x</literal>" est en minuscule, il est converti en majuscule. Puis, le bit 6 (hex 40) - est inversé. Ainsi "<literal>\cz</literal>" devient <literal>1A</literal>, - mais "<literal>\c{</literal>" devient hex 3B, tandis que "<literal>\c;</literal>" + est inversé. Ainsi "<literal>\cz</literal>" devient <literal>1A</literal>, + mais "<literal>\c{</literal>" devient hex 3B, tandis que "<literal>\c;</literal>" devient hex 7B. </para> <para> - Après "<literal>\x</literal>", deux caractères + Après "<literal>\x</literal>", deux caractères hexadécimaeux sont lus (les lettres peuvent être en majuscule ou minuscule). </para> <para> - Après "<literal>\0</literal>", deux caractères octal sont lus. + Après "<literal>\0</literal>", deux caractères octal sont lus. Dans chacun des cas, le méta-caractère tente de lire autant de caractère que possible. Ainsi la séquence - "<literal>\0\x\07</literal>", sera comprise comme deux caractères nuls, - suivi d'un caractère alarme (BEL). Assurez vous que vous fournissez + "<literal>\0\x\07</literal>", sera comprise comme deux caractères nuls, + suivi d'un caractère alarme (BEL). Assurez-vous que vous fournissez suffisamment de chiffres après le méta-caractère. </para> <para> - La gestion de la séquence "<literal>\y</literal>", avec y <> 0 + La gestion de la séquence "<literal>\y</literal>", avec y <> 0 est plutôt compliquée. En dehors des caractères de classes, PCRE va lire y et tous les caractères qui suivent comme des chiffres - décimaux. Si y est plus petit que 10, ou bien si il y a + décimaux. Si y est plus petit que 10, ou bien s'il y a déjà eu au moins autant de parenthèses ouvrantes auparavant, la séquence est prise pour une référence arrière. Le détail sera vu ultérieurement, après la @@ -1386,13 +1408,13 @@ A l'intérieur d'un caractère de classe, ou si y est plus grand que 10, et qu'il n'y a pas eu assez de parenthèses ouvrantes auparavant, PCRE lis jusqu'à 3 chiffres octals à la suite - de l'antislash, et génére un octet unique, à partir + de l'antislash, et génère un octet unique, à partir des 8 bits de poids faible de la séquence. Tous les chiffres qui suivent ne sont pas interprétés, et se representent eux-mêmes. Par exemple: <variablelist> <varlistentry> - <term><emphasis>\040</emphasis></term> + <term><emphasis>\040</emphasis></term> <listitem> <simpara> une autre manière d'écrire un espace @@ -1400,16 +1422,16 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\40</emphasis></term> + <term><emphasis>\40</emphasis></term> <listitem> <simpara> - identique, dans la mesure oú il n'y a pas 40 parenthèses + identique, dans la mesure où il n'y a pas 40 parenthèses ouvrantes auparavant </simpara> </listitem> </varlistentry> <varlistentry> - <term><emphasis>\7</emphasis></term> + <term><emphasis>\7</emphasis></term> <listitem> <simpara> est toujours une référence arrière @@ -1417,7 +1439,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\11</emphasis></term> + <term><emphasis>\11</emphasis></term> <listitem> <simpara> peut être une référence de retour, @@ -1426,7 +1448,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\011</emphasis></term> + <term><emphasis>\011</emphasis></term> <listitem> <simpara> toujours une tabulation @@ -1434,7 +1456,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\0113</emphasis></term> + <term><emphasis>\0113</emphasis></term> <listitem> <simpara> est une tabulation suivi du caractère "3" @@ -1442,7 +1464,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\113</emphasis></term> + <term><emphasis>\113</emphasis></term> <listitem> <simpara> est le caractère 113 (étant donné qu'il ne @@ -1451,7 +1473,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\377</emphasis></term> + <term><emphasis>\377</emphasis></term> <listitem> <simpara> est un octet dont tous les bits sont à 1 @@ -1459,7 +1481,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\0113</emphasis></term> + <term><emphasis>\0113</emphasis></term> <listitem> <simpara> peut être soit une référence arrière, @@ -1478,7 +1500,7 @@ Toutes les séquences qui définissent une valeur d'un seul octet peuvent être utilisé dans les classes de caractères, et à l'extérieur. De plus, dans une classe de caractères, - la séquence "<literal>\b</literal>" est interprétée + la séquence "<literal>\b</literal>" est interprétée comme un caractère effacer (backspace, hex 08). A l'extérieur d'une classe de caractères, il peut avoir d'autres significations (voir ci-dessous). @@ -1488,7 +1510,7 @@ génériques de valeurs : <variablelist> <varlistentry> - <term><emphasis>\d</emphasis></term> + <term><emphasis>\d</emphasis></term> <listitem> <simpara> tout caractère décimal @@ -1496,7 +1518,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\D</emphasis></term> + <term><emphasis>\D</emphasis></term> <listitem> <simpara> tout caractère qui n'est pas un caractère décimal @@ -1504,7 +1526,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\S</emphasis></term> + <term><emphasis>\S</emphasis></term> <listitem> <simpara> tout caractère blanc @@ -1512,7 +1534,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\s</emphasis></term> + <term><emphasis>\s</emphasis></term> <listitem> <simpara> tout caractère qui n'est pas un caractère blanc @@ -1520,7 +1542,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\W</emphasis></term> + <term><emphasis>\W</emphasis></term> <listitem> <simpara> tout caractère de "mot" @@ -1528,7 +1550,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\w</emphasis></term> + <term><emphasis>\w</emphasis></term> <listitem> <simpara> tout caractère qui n'est pas un caractère de "mot" @@ -1545,7 +1567,7 @@ </para> <para> Un caractère de "mot" sera une lettre, un chiffre ou le - caractère souligné, c'est à dire un + caractère souligné, c'est-à-dire un caractère qui pourra être une partie d'un mot Perl. La définition des lettres et chiffres est définie par les tables de caractères de PCRE, et peut varier suivant la table @@ -1553,7 +1575,7 @@ ci-dessus. Par exemple, dans la configuration français ("fr"), certains caractères ont des codes supérieurs à 128, pour les caractères accentués, et ils seront compris - par le méta caractère <literal>\w</literal>. + par le méta caractère <literal>\w</literal>. </para> <para> Ces séquences de caractères peuvent apparaître à @@ -1571,7 +1593,7 @@ plus-bas. Les assertions avec antislash sont les suivantes : <variablelist> <varlistentry> - <term><emphasis>\b</emphasis></term> + <term><emphasis>\b</emphasis></term> <listitem> <simpara> limite de mot @@ -1579,7 +1601,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\B</emphasis></term> + <term><emphasis>\B</emphasis></term> <listitem> <simpara> pas limite de mot @@ -1587,7 +1609,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\A</emphasis></term> + <term><emphasis>\A</emphasis></term> <listitem> <simpara> début de la chaîne sujet @@ -1596,7 +1618,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\Z</emphasis></term> + <term><emphasis>\Z</emphasis></term> <listitem> <simpara> fin de la chaîne sujet ou nouvelle ligne à @@ -1606,7 +1628,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\z</emphasis></term> + <term><emphasis>\z</emphasis></term> <listitem> <simpara> fin de la chaîne sujet @@ -1618,27 +1640,27 @@ </para> <para> Ces assertions ne peuvent pas apparaître dans une classe de - caractères (mais "\b" a une autre signification à + caractères (mais "\b" a une autre signification à l'intérieur d'une classe de caractères). </para> <para> Une limite de mot est un emplacement dans la chaîne sujet ou un caractère et son suivant ne sont pas en même temps des caractères de mot, ou le contraire (on peut le voir comme - <literal>\w\W</literal> ou <literal>\W\w</literal>), ou encore le + <literal>\w\W</literal> ou <literal>\W\w</literal>), ou encore le premier ou le dernier caractère est un caractère mot. </para> <para> - Les assertions <literal>\A</literal>, <literal>\Z</literal>, et - <literal>\z</literal> diffèrent des méta caractères - <literal>^</literal> et <literal>$</literal> dans la mesure oú + Les assertions <literal>\A</literal>, <literal>\Z</literal>, et + <literal>\z</literal> diffèrent des méta caractères + <literal>^</literal> et <literal>$</literal> dans la mesure où ils ne sont pas dépendants des options, notamment <link linkend="pcre.pattern.modifiers">PCRE_NOTBOL</link> ou <link linkend="pcre.pattern.modifiers">PCRE_NOTEOL</link>. - La différence entre <literal>\Z</literal> et - <literal>\z</literal> tient au fait que <literal>\Z</literal> recherche + La différence entre <literal>\Z</literal> et + <literal>\z</literal> tient au fait que <literal>\Z</literal> recherche les positions avant les nouvelles lignes et à la fin de la - chaîne sujet, tandis que <literal>\z</literal> ne recherche + chaîne sujet, tandis que <literal>\z</literal> ne recherche que la fin de la chaîne. </para> </refsect2> @@ -1683,17 +1705,17 @@ fin de la chaîne sujet. Cela se fait en ajoutant l'option <link linkend="pcre.pattern.modifiers">PCRE_DOLLAR_ENDONLY</link> au moment de la compilation, ou de l'exécution. - Cette option est inopérante sur <literal>\Z</literal>. + Cette option est inopérante sur <literal>\Z</literal>. </para> <para> La signification de <literal>^</literal> peut changer, de manière à l'amener à ce qu'il puisse se trouver immédiatement avant et immédiatement après un caractère de nouvelle - ligne "<literal>\n</literal>". Cela se fait en ajoutant l'option + ligne "<literal>\n</literal>". Cela se fait en ajoutant l'option <link linkend="pcre.pattern.modifiers">PCRE_MULTILINE</link> au moment de la compilation ou de l'exécution. Par exemple, le masque <literal>/^abc$/</literal> accepte la chaîne - "<literal>def\nabc</literal>" uniquement en mode multi-lignes. Par + "<literal>def\nabc</literal>" uniquement en mode multi-lignes. Par conséquent, toutes les parties du masques qui commencent par "<literal>^</literal>" ne sont pas ancrées, en mode multi-lignes. L'option <link linkend="pcre.pattern.modifiers">PCRE_DOLLAR_ENDONLY</link> @@ -1701,10 +1723,10 @@ <link linkend="pcre.pattern.modifiers">PCRE_MULTILINE</link> est choisie. </para> <para> - Notez que les méta caractères <literal>\A</literal>, - <literal>\Z</literal>, et <literal>\z</literal> peuvent servir à + Notez que les méta caractères <literal>\A</literal>, + <literal>\Z</literal>, et <literal>\z</literal> peuvent servir à répérer le début et la fin du sujet, et toutes les - parties du masque qui commenceront par <literal>\A</literal> seront toujours + parties du masque qui commenceront par <literal>\A</literal> seront toujours ancrées, avec l'option <link linkend="pcre.pattern.modifiers">PCRE_MULTILINE</link> ou non. </para> @@ -1779,17 +1801,17 @@ requis dans une classe, il faut l'échapper avec un antislash, ou le faire apparaître à une position ou il ne pourra pas être interprété comme une indication d'intervalle, - c'est à dire au début ou à la fin de la classe. + c'est-à-dire au début ou à la fin de la classe. </para> <para> Il n'est pas possible d'avoir le caractère crochet fermant "<literal>]</literal>" comme fin d'intervalle. Un masque tel que <literal>[W-]46]</literal> est compris comme la classe de caractères contenant deux caractères ("W" et "-") suivi de la chaîne - litérale "46]", ce qui fait qu'il va accepter + littérale "46]", ce qui fait qu'il va accepter "<literal>W46]</literal>" ou "<literal>-46]</literal>". Cependant, si "<literal>]</literal>" est échappé avec un antislash, le - masque <literal>[W-\]46]</literal> est interprété comme + masque <literal>[W-\]46]</literal> est interprété comme une classe d'un seul caractère, contenant un intervalle de caractères. </para> @@ -1798,27 +1820,27 @@ aussi être utilisée pour déterminer les limites de l'intervalle. Les intervalles travaillent sur des séquences ASCII. Ils peuvent aussi être précisées - avec des valeurs numériques, par exemple "<literal>[\000-\037]</literal>". + avec des valeurs numériques, par exemple "<literal>[\000-\037]</literal>". Si cet intervalle inclus des lettres utilisées avec une option d'insensibilité de casse, les majuscules ou minuscules correspondantes seront aussi incluses. Par exemple, "<literal>[C-c]</literal>" - est équivalent é "<literal>[][\^_`wxyzabc]</literal>", + est équivalent é "<literal>[][\^_`wxyzabc]</literal>", avec l'option d'insensibilité de casse. Si la table locale de - caractères est "fr", "<literal>[\xc8-\xcb]</literal>" correspond + caractères est "fr", "<literal>[\xc8-\xcb]</literal>" correspond aux caractères accentués. </para> <para> - Les types de caractères <literal>\d</literal>, - <literal>\D</literal>, <literal>\S</literal>, <literal>\s</literal>, - <literal>\w</literal>, <literal>\W</literal> peuvent aussi intervenir + Les types de caractères <literal>\d</literal>, + <literal>\D</literal>, <literal>\S</literal>, <literal>\s</literal>, + <literal>\w</literal>, <literal>\W</literal> peuvent aussi intervenir dans les classes de caractères. Par exemple, - "<literal>[][\^_`wxyzabc][\dABCDEF]</literal>" acceptera n'importe + "<literal>[][\^_`wxyzabc][\dABCDEF]</literal>" acceptera n'importe quel caractère hexadécimal. Un accent circonflexe peut aussi être utilisé pour spécifier adroitement des ensembles de caractères plus restrictifs : par exemple - <literal>[^\W_]</literal> accepte toutes les lettres et les chiffres, + <literal>[^\W_]</literal> accepte toutes les lettres et les chiffres, mais pas les soulignés. Tous les caractères non alpha- - numériques autres que <literal>\, -, ^</literal> (placés + numériques autres que <literal>\, -, ^</literal> (placés en début de chaîne) et <literal>]</literal> n'ont pas de signification particulière, mais ils ne perdront rien à être échappés. @@ -1909,7 +1931,7 @@ <link linkend="pcre.pattern.modifiers">PCRE_CASELESS</link>. En d'autres termes, activer des séquences d'options dans le corps principal du masque revient à appliquer l'option à tout le masque, sauf - ordre contraire dans les sous-masques. Si il y a plusieurs séquences + ordre contraire dans les sous-masques. S'il y a plusieurs séquences d'options qui portent sur la même option, la dernière s'appliquera. </para> <para> @@ -1962,7 +1984,7 @@ chaîne sujet est acceptée par le masque complet, les sous-masques sont transmis à l'appelant grâce à un vecteur de sous-masques. Les parenthèses ouvrantes sont - comptées de gauche à droite, (commencant à 1). + comptées de gauche à droite, (commençant à 1). Par exemple, soit la chaîne sujet "<literal>le roi soleil</literal>" qui est utilisée avec le masque suivant : <literal>Le ((roi|prince) (soleil|charmant))</literal> les sous-masques @@ -1971,7 +1993,7 @@ </para> <para> L'ubiquité des parenthèses n'est pas toujours simple - d'emploi. Il y a des moments oú regrouper des sous-masques + d'emploi. Il y a des moments où regrouper des sous-masques est nécessaire, sans pour autant capturer la valeur trouvée. Si une parenthèse ouvrante est suivie de "<literal>?:</literal>", le sous-masque ne capture pas la chaîne assortie, et ne sera pas @@ -2019,7 +2041,7 @@ </listitem> </varlistentry> <varlistentry> - <term><emphasis>\2</emphasis></term> + <term><emphasis>\2</emphasis></term> <listitem> <simpara> Une référence de retour (Voir section suivante) @@ -2045,7 +2067,7 @@ doit être égal ou inférieur au second. Par exemple <literal>z{2,4}</literal> accepte "<literal>zz</literal>", "<literal>zzz</literal>", ou "<literal>zzzz</literal>". L'accolade fermante - n'a pas de signification par elle même. + n'a pas de signification par elle-même. </para> <para> Si le second nombre est omis, mais que la virgule est là, cela @@ -2053,13 +2075,13 @@ et la virgule sont omis, le quantificateur correspond au nombre exact de répétition attendues. Par exemple : accepte n'importe quelle succession d'au moins 3 voyelles minuscules, tandis - que <literal>\d{d}</literal> n'accepte que 8 chiffres exactement. + que <literal>\d{d}</literal> n'accepte que 8 chiffres exactement. </para> <para> - Une accolade ouvrante qui apparaît à une position oú + Une accolade ouvrante qui apparaît à une position où un quantificateur n'est pas accepté, ou si la syntaxe des quantificateurs n'est pas respectée, sera considérée - litérale. Par exemple, "<literal>{,6}</literal>" n'est pas un + littérale. Par exemple, "<literal>{,6}</literal>" n'est pas un quantificateur, mais une chaîne de 4 caractères. </para> <para> @@ -2100,7 +2122,7 @@ <para> Les versions plus anciennes de Perl et PCRE généraient alors une erreur au moment de la compilation. Cependant, étant donné - qu'il existe des situations oú ces constructions peuvent être + qu'il existe des situations où ces constructions peuvent être utiles, ces masques sont désormais autorisés. Cependant, si la répétion du sous-masque ne trouve aucun caractère, la boucle est interrompue. @@ -2113,7 +2135,7 @@ commentaires d'un programme en C. Les commentaires apparaissent entre les séquences <literal>/*....*/</literal> et à l'intérieur de ces délimiteurs, les <literal>*</literal> et <literal>/</literal> - sont autorisés. Appliquer le masque <literal>/\*.*\*/</literal> + sont autorisés. Appliquer le masque <literal>/\*.*\*/</literal> à la chaîne <literal>/* first commet */ not comment /* second comment */</literal> ne peut réussir, car le masque travaille sur toute la chaîne, @@ -2123,14 +2145,14 @@ Cependant, un quantificateur suivi d'un point d'interrogation cesse d'être gourmand, et au contraire, ne recherche que le nombre minimum de répétition. Dans ces conditions, le masque - <literal>/\*.*?\*/</literal> trouvera bien les commentaires du code + <literal>/\*.*?\*/</literal> trouvera bien les commentaires du code C. La signification des autres quantificateurs n'est pas changée. </para> <para> Attention à ne pas confondre l'utilisation du point d'interrogation - ici avec son utilisation comme quantificateur lui même. + ici avec son utilisation comme quantificateur lui-même. A cause cette ambiguité, il peut apparaître des situations - oú il faut le doubler : <literal>\d??\d</literal>. Ce masque va + où il faut le doubler : <literal>\d??\d</literal>. Ce masque va tenter de lire un seul chiffre, mais le cas échéant, il acceptera 2 chiffres pour permettre à la recherche d'aboutir. Si l'option <link linkend="pcre.pattern.modifiers">PCRE_UNGREEDY</link> @@ -2152,12 +2174,12 @@ Si un masque commence par <literal>..*</literal> ou <literal>.{0,}</literal> et que l'option <link linkend="pcre.pattern.modifiers">PCRE_DOTALL</link> (équivalent en Perl à /s) est - activée, c'est à dire en autorisant le remplacement des nouvelles + activée, c'est-à-dire en autorisant le remplacement des nouvelles lignes par un méta-caractère, alors le masque est implicitement ancré, car tout ce qui suit va être mangé par la première séquence, et se comportera comme si le masque se terminait par le méta caractère - <literal>\A</literal>. Dans le cas oú on sait d'avance qu'il + <literal>\A</literal>. Dans le cas où on sait d'avance qu'il n'y aura pas de caractère de nouvelle ligne, activer l'option <link linkend="pcre.pattern.modifiers">PCRE_DOTALL</link> et commencer le masque par <literal>.*</literal> permet d'optmiser le masque. @@ -2167,7 +2189,7 @@ explicitement le masque. Lorsqu'un sous-masque capturant est répété, la valeur capturée est la dernière. Par exemple, après que - "<literal>(inter[net]{3}\s*)+</literal>" ai été + "<literal>(inter[net]{3}\s*)+</literal>" ai été appliqué à "<literal>internet interne</literal>", la valeur de la chaîne capturée est "<literal>interne</literal>". </para> @@ -2192,14 +2214,14 @@ Cependant, si le nombre décimal suivant l'antislash est plus petit que 10, il sera toujours considéré comme une référence arrière, et cela - générera une erreur si le nombre de capture + génèrera une erreur si le nombre de capture n'est pas suffisant. En d'autres termes, il faut qu'il existe suffisamment de parenthèses ouvrantes à gauche de la référence, surtout si la référence est inférieure à 10. </para> <para> - Reportez vous à la section "antislash" pour avoir de + Reportez-vous à la section "antislash" pour avoir de plus amples détails à propos du nombre de chiffres qui suivent l'antislash. </para> @@ -2208,12 +2230,12 @@ été capturé par un sous-masque dans le masque courant, plutôt que remplace le sous-masque lui-même. Ainsi <literal>(calme|rapide)</literal> et - <literal>\1ment</literal> trouvera "<literal>calme et calmement</literal>" + <literal>\1ment</literal> trouvera "<literal>calme et calmement</literal>" et "<literal>rapide et rapidement</literal>", mais pas "<literal>calme et rapidement</literal>". Si la recherche tient compte de la casse, alors la casse de la chaîne capturée sera importante. Par exemple, - <literal>((?i)rah)\s+\1</literal> trouve "<literal>rah rah</literal>" + <literal>((?i)rah)\s+\1</literal> trouve "<literal>rah rah</literal>" et "<literal>RAH RAH</literal>", mais pas "<literal>RAH rah</literal>", même si le sous-masque capturant initial ne tenait pas compte de la casse. @@ -2222,7 +2244,7 @@ Il peut y avoir plusieurs références arrières dans le même sous-masque. Si un sous-masque n'a pas été utilisé dans une recherche, alors les références - arrières échoueront. Par exemple "<literal>(a|(bc))\2</literal>" + arrières échoueront. Par exemple "<literal>(a|(bc))\2</literal>" ne réussira jamais si la chaîne sujet commence par "<literal>a</literal>" plutôt que par "<literal>bc</literal>". </para> @@ -2242,10 +2264,10 @@ arrière qui intervient à l'intérieur de parenthèses auquel elle fait référence échouera dès que le sous-masque sera utilisé. Par exemple, - <literal>(a\1)</literal> échouera toujours. Cependant, ces + <literal>(a\1)</literal> échouera toujours. Cependant, ces références peuvent être utiles dans les sous-masques répétitifs. Par exemple, le masque - "<literal>(a|b\1)+</literal>" pourra convenir pour "<literal>a</literal>", + "<literal>(a|b\1)+</literal>" pourra convenir pour "<literal>a</literal>", "<literal>aba</literal>", "<literal>ababaa</literal>", etc.... </para> <para> @@ -2254,7 +2276,7 @@ Pour que cela fonctionne, il faut que la première itération n'ai pas besoin d'utiliser la référence arrière. Cela arrive avec les alternatives, comme dans - l'exemple ci dessus, ou avec un quantificateur de minimum 0. + l'exemple ci-dessus, ou avec un quantificateur de minimum 0. </para> </refsect2> <refsect2 id="regexp.reference.assertions"> @@ -2264,23 +2286,23 @@ précédent celui qui est en cours d'étude. Ce test ne consomme par de caractère (ie, on ne déplace pas le pointeur de caractères). Les assertions simples sont - codées avec <literal>\b</literal>, <literal>\B</literal>, - <literal>\A</literal>, <literal>\Z</literal>, <literal>\z</literal>, + codées avec <literal>\b</literal>, <literal>\B</literal>, + <literal>\A</literal>, <literal>\Z</literal>, <literal>\z</literal>, <literal>^</literal> et <literal>$</literal>, et sont décrites précédemment. </para> <para> Il existe cependant un type d'assertions plus complexes, codées sous la forme de sous-masques. Il en existe deux types : celles qui - travaillent au-dela de la position courante (<literal>\w+(?=;)</literal>), - et celles qui travaillent en deça (<literal>(?!)\w+</literal>). + travaillent au-delà de la position courante (<literal>\w+(?=;)</literal>), + et celles qui travaillent en deça (<literal>(?!)\w+</literal>). </para> <para> Une assertion se comporte comme un sous-masque, hormis le fait qu'elle ne déplace pas le pointeur de position. Les assertions avant commencent par <literal>(?=</literal> pour les assertions positives, et par <literal>(?!</literal>, pour les assertions négatives. Par exemple : - <literal>\w+(?=;)</literal> s'assure qu'un mot est suivi d'un point-virgule, + <literal>\w+(?=;)</literal> s'assure qu'un mot est suivi d'un point-virgule, mais n'inclus pas le point virgule dans la capture. D'autre part, <literal>(?!foo)bar</literal> en est proche, mais ne trouve pas une occurrence de "<literal>bar</literal>" qui soit précédée @@ -2327,7 +2349,7 @@ </para> <para> Plusieurs assertions peuvent intervenir successivement. Par exemple, - le masque <literal>(?<=\d{3})(?<!999)foo</literal> recherche + le masque <literal>(?<=\d{3})(?<!999)foo</literal> recherche les chaînes "<literal>foo</literal>" précédées par trois chiffres qui ne sont pas "999". Notez que chaque assertion est appliquées indépendemment, au même point de @@ -2340,7 +2362,7 @@ les trois suivants étant différents de "<literal>999</literal>". Par exemple, ce masque n'acceptera pas la chaîne "<literal>123abcfoo</literal>". Pour ce faire, il faut utiliser le masque - suivant : <literal>(?<=\d{3}...)(?<!999)foo</literal>. Dans ce + suivant : <literal>(?<=\d{3}...)(?<!999)foo</literal>. Dans ce masque, la première assertion vérifie les six premiers caractères, s'assure que les trois premiers sont des entiers, et la deuxième assertion s'assure que les trois derniers @@ -2353,7 +2375,7 @@ précédées par "<literal>bar</literal>", qui, à son tour, n'est pas précédé par "<literal>foo</literal>". Au contraire, - <literal>(?<=\d{3}(?!999)...)foo</literal> est un autre masque, + <literal>(?<=\d{3}(?!999)...)foo</literal> est un autre masque, qui recherche les caractères "<literal>foo</literal>", précédés par trois chiffres, suivis trois autres caractères qui ne forment pas "<literal>999</literal>". @@ -2380,7 +2402,7 @@ plus tôt, si on pense qu'il n'est pas besoin d'aller plus loin. </para> <para> - Considérons par exemple, le masque <literal>\d+foo</literal> + Considérons par exemple, le masque <literal>\d+foo</literal> appliqué à la ligne <literal>123456bar</literal>. Après avoir tenté d'utiliser les 6 chiffres suivi de "<literal>foo</literal>" qui font échouer, l'action habituelle @@ -2393,8 +2415,8 @@ n'a pas besoin d'être réévaluée à chaque tentative. Ceci conduirait à ce que la recherche échoue immédiatement après le premier test. - Ces assertions ont leur propre notation, commencant avec - <literal>(?></literal> comme ceci : <literal>(?>\d+)bar</literal>. + Ces assertions ont leur propre notation, commençant avec + <literal>(?></literal> comme ceci : <literal>(?>\d+)bar</literal>. </para> <para> Ce type de parenthèses verrouille le sous-masque qu'il contient @@ -2409,10 +2431,10 @@ Les sous-masques uniques ne sont pas capturants. Des cas simples comme ceux présentés ci-dessus peuvent être pris comme des situations maximisantes, qui réservent le maximum de - caractères. En effet, alors que <literal>\d+</literal> et - <literal>\d+?</literal> ajustent le nombre de chiffres trouvés + caractères. En effet, alors que <literal>\d+</literal> et + <literal>\d+?</literal> ajustent le nombre de chiffres trouvés de manière à laisser la possibilité au masque de - réussir, <literal>(?>\d+)</literal> ne peut retenir que la + réussir, <literal>(?>\d+)</literal> ne peut retenir que la séquence entière de chiffres. Cette construction peut contenir un nombre arbitraire de sous-masques complexes, et ils peuvent être imbriqués. @@ -2452,7 +2474,7 @@ temps de calcul trop long. </para> <para> - Le masque <literal>(\D+|<\d+>)*[!?]</literal> recherche un nombre + Le masque <literal>(\D+|<\d+>)*[!?]</literal> recherche un nombre illimité de sous-chaînes, qui contiennent soit des non-chiffres, soit des chiffres inclus dans <>, suivi soit par <literal>!</literal> ou par <literal>?</literal>. Lorsqu'il trouve @@ -2470,7 +2492,7 @@ attendu, et s'aperçoit rapidement qu'il n'y a pas ce caractère). </para> <para> - Si le masque utilisé est <literal>((?>\D+)|&;lt;\d+>)*[!?]</literal> + Si le masque utilisé est <literal>((?>\D+)|&;lt;\d+>)*[!?]</literal> les séquences de chiffres ne peuvent pas être trouvées, et l'échec intervient rapidement. </para> @@ -2502,14 +2524,14 @@ significatifs pour le rendre plus compréhensible (on supposera l'option <link linkend="pcre.pattern.modifiers">PCRE_EXTENDED</link> activée) et qui est divisé en trois parties - pour simplifier les explications : <literal>( \( )? [^()]+ (?(1) \) )</literal>. + pour simplifier les explications : <literal>( \( )? [^()]+ (?(1) \) )</literal>. </para> <para> La première partie recherche une parenthèse ouvrante optionnelle, et si elle existe, elle est capturée. La deuxième partie recherche un séquence de caractères qui ne contiennent pas de parenthèses. La troisième partie est - conditionnée à la première, et s'assure que si il + conditionnée à la première, et s'assure que s'il y avait une parenthèse ouvrante, il en existe une fermante. Si une parenthèse ouvrante a été trouvée, elle a été capturée, et donc la première capture @@ -2524,7 +2546,7 @@ arrière ou avant. Considérons le masque suivant (même conditions que le précédent) et avec deux alternatives en seconde ligne : - <literal>(?(?=[^a-z]*[a-z])\d{2}[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} )</literal>. + <literal>(?(?=[^a-z]*[a-z])\d{2}[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} )</literal>. La condition est une assertion avant positive, qui recherche une séquence optionnelle de caractères non-lettre. En d'autres termes, elle teste la presence d'au moins une lettre dans la chaîne @@ -2539,7 +2561,7 @@ <title>Commentaires</title> <simpara> La séquence <literal>(?#</literal> marque le début d'un commentaire, - qui se termine à la prochaîne parenthèse fermante. Les + qui se termine à la prochaine parenthèse fermante. Les parenthèses imbriquées ne sont pas autorisées. Les caractères entre ces délimiteurs ne jouent alors aucun rôle dans le masque. @@ -2549,7 +2571,7 @@ est activée, les caractères dièses <literal>#</literal> non échappés en dehors d'une classe de caractères introduisent un commentaire qui continuera jusqu'à - la prochaîne ligne dans le masque. + la prochaine ligne dans le masque. </simpara> </refsect2> <refsect2 id="regexp.reference.recursive"> @@ -2568,7 +2590,7 @@ problème des parenthèses (l'option <link linkend="pcre.pattern.modifiers">PCRE_EXTENDED</link> est utilisée pour ignorer les espaces) : - <literal>\( ( (?>[^()]+) | (?R) )* \)</literal> + <literal>\( ( (?>[^()]+) | (?R) )* \)</literal> </para> <para> Tout d'abord, le masque recherche une parenthèse ouvrante. Puis, @@ -2602,9 +2624,9 @@ capturante est "<literal>ef</literal>", qui est la dernière valeur lue au niveau supérieur. Si de nouvelles parenthèses sont ajoutées, par exemple : - <literal>\( ( ( (?>[^()]+) | (?R) )* ) \)</literal> + <literal>\( ( ( (?>[^()]+) | (?R) )* ) \)</literal> alors la chaîne capturée est "<literal>ab(cd)ef</literal>", - c'est à dire le contenu de la parenthèses capturant + c'est-à-dire le contenu de la parenthèses capturant de plus haut niveau. S'il y a plus de 15 parenthèses capturantes dans une chaîne, PCRE doit utiliser plus de mémoire pour stocker ces données. S'il ne @@ -2643,7 +2665,7 @@ de ces nouvelles lignes, et non pas seulement au début de la chaîne sujet. Par exemple, le masque, <literal>(.*)second</literal> acceptera la chaîne - "<literal>premier \net second</literal>" (avec "<literal>\n</literal>" + "<literal>premier \net second</literal>" (avec "<literal>\n</literal>" qui remplace la nouvelle ligne), et la première chaîne capturée sera "<literal>et</literal>". </para> @@ -2683,7 +2705,7 @@ annoncé immédiatement. Sinon, il n'y a pas d'optimisation dans la recherche. Vous pouvez voir la différence de comportement avec le masque suivant : - <literal>(a+)*\d</literal>. Le premier retourne un échec + <literal>(a+)*\d</literal>. Le premier retourne un échec quasi-immédiatement, s'il est appliqué à une ligne de "<literal>a</literal>", alors que le second masque prend un temps significatif pour une chaîne de plus de