Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
logiciel:bureautique:calibre:regex:start [2021/02/20 20:13] – [Voir aussi] adminlogiciel:bureautique:calibre:regex:start [2022/08/13 22:15] (Version actuelle) – modification externe 127.0.0.1
Ligne 24: Ligne 24:
 </WRAP> </WRAP>
  
-====== Où utiliser des expressions régulières dans Calibre ? ======+===== Où utiliser des expressions régulières dans Calibre ? =====
  
 Il y a dans Calibre quelques endroits où sont utilisées les expressions régulières : Il y a dans Calibre quelques endroits où sont utilisées les expressions régulières :
Ligne 33: Ligne 33:
 L'éditeur de livre de calibre peut également utiliser des expressions régulières dans les fonctions de recherche et remplacement. L'éditeur de livre de calibre peut également utiliser des expressions régulières dans les fonctions de recherche et remplacement.
  
-====== Que diable est une expression régulière ? ======+===== Que diable est une expression régulière ? =====
  
 Une expression régulière est une façon de décrire des ensembles de chaînes. Une expression régulière est une façon de décrire des ensembles de chaînes.
Ligne 47: Ligne 47:
 </WRAP> </WRAP>
  
-====== Quelques explications ? ======+===== Quelques explications ? =====
  
 Tout d'abord, voici le concept le plus important pour les expressions régulières : une chaîne est elle-même une expression régulière qui se correspond. C'est à dire que, si je veux correspondre à la chaîne 'Bonjour tout le monde!' en utilisant une expression régulière, l'expression régulière à utiliser serait 'Bonjour tout le monde !'. Tout d'abord, voici le concept le plus important pour les expressions régulières : une chaîne est elle-même une expression régulière qui se correspond. C'est à dire que, si je veux correspondre à la chaîne 'Bonjour tout le monde!' en utilisant une expression régulière, l'expression régulière à utiliser serait 'Bonjour tout le monde !'.
Ligne 53: Ligne 53:
 Notez cependant que cela ne correspond qu'à la chaîne exacte 'Bonjour tout le monde!', et non pas par exemple à 'Bonjour le monde!' ni 'Bonjour, monde!' ni toute autre variante. Notez cependant que cela ne correspond qu'à la chaîne exacte 'Bonjour tout le monde!', et non pas par exemple à 'Bonjour le monde!' ni 'Bonjour, monde!' ni toute autre variante.
  
-====== Et ensuite ? ======+===== Et ensuite ? =====
  
 Nous avons dit que les expressions régulières peuvent correspondre à plusieurs chaînes. Nous avons dit que les expressions régulières peuvent correspondre à plusieurs chaînes.
Ligne 77: Ligne 77:
 On peut répéter un caractère ou un jeu de caractère avec des caractères spéciaux dits jokers ou quantificateurs, '+', '?' et '*', qui répètent le seul élément qui les précède. (par élement, nous disons un caractère unique, un jeu de caractères, une séquence d'échappement ou un groupe (nous verrons cela plus loin) On peut répéter un caractère ou un jeu de caractère avec des caractères spéciaux dits jokers ou quantificateurs, '+', '?' et '*', qui répètent le seul élément qui les précède. (par élement, nous disons un caractère unique, un jeu de caractères, une séquence d'échappement ou un groupe (nous verrons cela plus loin)
   ? ?   ? ?
-  : correspond à 0 ou 1 fois l'élément précédent,+  : correspond à 0 ou 1 fois l'élément précédent
   ? *   ? *
   : correspond à 0 ou plus élément précédent   : correspond à 0 ou plus élément précédent
Ligne 168: Ligne 168:
 Donc, pour en revenir à l'exemple <p[^>]*> de la section précédente, vous voyez que le jeu de caractères qu'il utilise fait correspondre à tout caractère sauf une équerre de fermeture. Donc, pour en revenir à l'exemple <p[^>]*> de la section précédente, vous voyez que le jeu de caractères qu'il utilise fait correspondre à tout caractère sauf une équerre de fermeture.
  
-====== Et pour faire correspondre plusieurs chaînes différentes ? ======+===== Et pour faire correspondre plusieurs chaînes différentes ? =====
  
 Considérons cet exemple. Le livre vous convertissez a "Titre" écrit sur les pages impaires et "auteur" sur les pages paires. Considérons cet exemple. Le livre vous convertissez a "Titre" écrit sur les pages impaires et "auteur" sur les pages paires.
Ligne 184: Ligne 184:
 Donc, si vous voulez faire correspondre les chaînes "Calibre" et "calibre" et que vous voulez sélectionner seulement entre les "c" majuscules et minuscules, vous devriez utiliser l'expression (c|C)alibre, où le groupement assure que seul le "c" est choisi. Si vous utilisiez "c|Calibre", vous obtiendrez une correspondance avec la chaîne 'c' ou la chaîne 'Calibre', ce qui n'est pas ce que nous voulons. Donc, si vous voulez faire correspondre les chaînes "Calibre" et "calibre" et que vous voulez sélectionner seulement entre les "c" majuscules et minuscules, vous devriez utiliser l'expression (c|C)alibre, où le groupement assure que seul le "c" est choisi. Si vous utilisiez "c|Calibre", vous obtiendrez une correspondance avec la chaîne 'c' ou la chaîne 'Calibre', ce qui n'est pas ce que nous voulons.
  
-====== You missed... ======+===== You missed... =====
  
 Si vous avez un groupe que vous avez déjà fait correspondre, vous pouvez utiliser des références à ce groupe plus loin dans l'expression : Les groupes sont numérotés à partir de 1, et vous y faire référence en échappant le numéro du groupe que vous souhaitez référencer, donc le cinquième groupe serait référencé \5. Donc, si vous avez recherché ([^ ]+) \1 dans la chaîne “Test Test”, vous souhaitez faire correspondre l'ensemble de la chaîne! Si vous avez un groupe que vous avez déjà fait correspondre, vous pouvez utiliser des références à ce groupe plus loin dans l'expression : Les groupes sont numérotés à partir de 1, et vous y faire référence en échappant le numéro du groupe que vous souhaitez référencer, donc le cinquième groupe serait référencé \5. Donc, si vous avez recherché ([^ ]+) \1 dans la chaîne “Test Test”, vous souhaitez faire correspondre l'ensemble de la chaîne!
Ligne 202: Ligne 202:
 De bons endroits pour placer des drapeaux dans votre expression sont soit le début soit la fin. Ainsi,ils ne se mélangent pas avec autre chose. De bons endroits pour placer des drapeaux dans votre expression sont soit le début soit la fin. Ainsi,ils ne se mélangent pas avec autre chose.
  
-====== Conversions ======+===== Conversions =====
  
 Let’s begin with the conversion settings, which is really neat. In the Search and Replace part, you can input a regexp (short for regular expression) that describes the string that will be replaced during the conversion. The neat part is the wizard. Click on the wizard staff and you get a preview of what calibre “sees” during the conversion process. Scroll down to the string you want to remove, select and copy it, paste it into the regexp field on top of the window. If there are variable parts, like page numbers or so, use sets and quantifiers to cover those, and while you’re at it, remember to escape special characters, if there are some. Hit the button labeled Test and calibre highlights the parts it would replace were you to use the regexp. Once you’re satisfied, hit OK and convert. Be careful if your conversion source has tags like this example: Let’s begin with the conversion settings, which is really neat. In the Search and Replace part, you can input a regexp (short for regular expression) that describes the string that will be replaced during the conversion. The neat part is the wizard. Click on the wizard staff and you get a preview of what calibre “sees” during the conversion process. Scroll down to the string you want to remove, select and copy it, paste it into the regexp field on top of the window. If there are variable parts, like page numbers or so, use sets and quantifiers to cover those, and while you’re at it, remember to escape special characters, if there are some. Hit the button labeled Test and calibre highlights the parts it would replace were you to use the regexp. Once you’re satisfied, hit OK and convert. Be careful if your conversion source has tags like this example:
Ligne 226: Ligne 226:
 One last word of warning, though: Regexps are powerful, but also really easy to get wrong. calibre provides really great testing possibilities to see if your expressions behave as you expect them to. Use them. Try not to shoot yourself in the foot. (God, I love that expression...) But should you, despite the warning, injure your foot (or any other body parts), try to learn from it. One last word of warning, though: Regexps are powerful, but also really easy to get wrong. calibre provides really great testing possibilities to see if your expressions behave as you expect them to. Use them. Try not to shoot yourself in the foot. (God, I love that expression...) But should you, despite the warning, injure your foot (or any other body parts), try to learn from it.
  
-====== Pré-requis ======+===== Pré-requis =====
  
   *    * 
  
-====== Première étape ======+===== Première étape =====
  
-====== Autres étapes ======+===== Autres étapes =====
  
-====== Conclusion ======+===== Conclusion =====
  
-====== Problèmes connus ======+===== Problèmes connus =====
  
-====== Voir aussi ======+===== Voir aussi =====
  
 ---- ----