TP 2 - Strings et Regex

Strings

Soit une variable str qui est une chaîne de caractères;

Fonctions prédéfinies pour le traitement des chaînes

Pour en savoir plus, lisez la documentation complète.

Expressions régulières

Règles

Character Description Exemple
* Zéro ou plusieurs fois a*, (ab)*
+ Une ou plusieurs fois a+, (ab)+
? Zéro ou une fois a?, (ab)?
^ début de string ^ab*
$ fin de string b*a$
. tout symbole .
[ ] Ensemble [abc]
\s Espace blanc a\sb
[^ ] ensemble complémentaire [^abc]
( ) groupe (abc)+
| Ou a | b, (ab) | (ba)

JavaScript

Character Description Exemple
{n} n fois a{3}
{n,m} au moins n, au plus m a{3,7}
\w alphanumérique et _ \w
\t TAB a\ta*
\n fin de linge a\nb
\r retour chariot a\rb
a(?!b) a seulement si non suivi par b a(?!b)
a(?=b) a seulement si suivi par b a(?=b)
( ) group a(ab)a

Pour déclarer des expressions régulières, on peut écrire de deux façons:

// making a new RexEx object the standard way
let regex: RegExp = new RegEx ("[0-9]+");
 
// making a new RegEx object using a shortcut
let regex: RegExp = /[0-9]+/;

Fonctions supplémentaires

String

  • str.split(separatorRegex, limit) - divise le string dans un array avec des éléments séparés separatorRegex
  • str.match(regex) - Recherche dans le string une sous-string qui suit l'expression régulière
  • str.search(regex) - Recherche une sous-string qui correspond à l'expression régulière et renvoie l'index de celle-ci ou -1 si elle ne la trouve pas.

Fonctions pour les RegEx

  • regex.exec(str) - Recherche dans un string une sous-string qui suit l'expression régulière
let regex: RegExp = /([0-9]+);([A-Za-z-\. ]+);([0-9]{3,4}[A-Za-z]+)/;
 
let match: RegExpExecArray|null = regex.exec ('1;ANDRONIE S. Manuela - Bianca;1220F extra text');
 
/*
match:
[ '1;ANDRONIE S. Manuela - Bianca;1220F', // the full match
  '1', // the first group
  'ANDRONIE S. Manuela - Bianca', // the second group
  '1220F', // the third group
  index: 0, // the position
  input: '1;ANDRONIE S. Manuela - Bianca;1220F extra text' ] // the full string
*/
  • regex.test(str) - Recherche dans une chaîne une sous-chaîne qui suit l'expression régulière et renvoie true de celle-ci trouve un ou false sinon

Pour plus de fonctions, lisez la documentation RegEx complète.

Exercises

Fichiers de groups:

  1. Téléchargez depuis le github le fichier BusinessFinancialData.csv qui contient des données financières d'entreprise. Dans ce document on a stocké le code de l'entreprise, la période de temps, la valeur totale, le sujet, la catégorie et le domaine d'activité (dans cette ordre précisément). Créez un projet nodejs et copiez dans une chaîne seulement la ligne numéro 3. Sans utiliser des expressions régulières, résolvez les demandes suivantes (seulement a l'aide des fonctions pour les strings):
    1. Affichez la position (index) du sujet dans le string. (0.2p)
    2. Affichez la dernière position de ” ” (\s) dans la chaîne. (0.4p)
    3. Traitez le string pour afficher sur des lignes différentes” le code, la valeur totale et la catégorie. (0.4p)
  2. Lisez tout le contenu du fichier dans un string (indice: voir TP 0). Sans utiliser des expressions régulières, résolvez les demandes suivantes:
    1. Divisez la chaîne dans un tableau en utilisant le caractère de nouvelle ligne (\n) comme séparateur (\r\n pour Windows). (0.4p)
    2. Traitez chaque string du tableau et affichez sur des lignes différentes le code, la valeur totale et la catégorie de chaque entreprise qui est dans le fichier. (0.6p)
  3. Pour chaque ligne de l'exercice 2, créez un objet de type Entreprise avec les détails de celle-ci. La méthode reste a votre choix. Ajoutez les objects dans un tableau. (1p)
  4. Téléchargez le fichier passwd et lisez-le dans un string. Créez un tableau avec des objets contenant les informations comprises dans le fichier, pour chaque ligne. Vous pouvez trouver des détails sur le format du fichier passwd ici. (1p)
  5. Utilisez des expressions régulières pour résoudre l'exercice 2. Vous pouvez utiliser RegEx101 pour écrire l'expression régulière et tester sa validité. (1p)
  6. Utilisez des expressions régulières pour résoudre l'exercice 3. (1.5p)
  7. Utilisez des expressions régulières pour résoudre l'exercice 4. (1.5p)
  8. Lisez le fichier typescript_errors et affichez:
    1. combien d'erreurs y a-t-il (0.5p)
    2. le liste de codes d'erreur (0.5p)
    3. Stockez les informations dans un tableau ayant le format suivant: (0.5p)
      [
         {
            "type":"error",
            "code":<erorr_code if it exists>,
            "type_error":<true/false>, //s'il s'agit d'une erreur de type
            "description":<the error description>
         },
         ...
      ]
    4. Ecrivez le tableau dans un fichier (indice: utilisez JSON.stringify) (0.5p)
  9. Bonus: Ecrivez un programme qui reçoit comme paramètre le fichier typescript_class.ts. Lisez le fichier et résolvez les demandes suivantes:
    1. affichez les bibliothèques importées (0.3p)
    2. affichez toutes les classes déclarées (0.3p)
    3. affichez toutes les classes enfant déclarées (nom de la classe enfant et la classe parent) (0.1p)
    4. affichez toutes les fonctions déclarées (nom et type de retour) (0.3p)
alf/laboratoare/02.txt · Last modified: 2022/03/14 16:14 by diana.ghindaoanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0