This is an old revision of the document!


TP 3 - Strings et Regex

Strings

Nous avons une variable str qui est une chaîne

Les fonctions disponibles sont:

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

Expressions régulières

Mathematique

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
var regex = new RegEx ("[0-9]+");
 
// making a new RegEx object using a shortcut
var regex = /[0-9]+/;

Fonctions

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.

RegEx

  • regex.exec(str) - Recherche dans un string une sous-string qui suit l'expression régulière
var regex = /([0-9]+);([A-Za-z-\. ]+);([0-9]{3,4}[A-Za-z]+)/;
 
var match = 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 le fichier des étudiants pour votre groupe. Créez un projet nodejs et écrivez dans une chaîne la ligne correspondant à votre nom (ex: var s = '4;BREBU L. Alexandra;1220F';). N'utilisez pas d'expressions régulières.
    1. Affiche la position du prénom dans la string. (0.2p)
    2. Afficher la dernière position de ”;” dans la chaîne. (0.2p)
    3. Traitez la string et affichez sur une ligne seperarte le prénom, le nom, l'initiale et le groupe. (0.6p)
  2. Lisez le contenu de votre fichier de groupe dans une string (voir TP 1). N'utilisez pas d'expressions régulières.
    1. Divisez la chaîne en un tableau en utilisant le caractère de nouvelle ligne (\n) comme séparateur. (0.4p)
    2. Traite chaque string du tableau et affiche sur une ligne distincte le prénom, le nom et le groupe de chaque etudiant. (0.6p)
  3. Pour chaque ligne de l'exercice 2, créez un objet avec les détails de l'etudiant. Ajoutez les obejcts dans un tableau. (1p)
  4. Téléchargez le fichier passwd et lisez-le dans une string. Créez un tableau avec des objets contenant les informations dans le fichier. Vous pouvez trouver des détails sur le fichier passwd ici. (1p)
  5. Utilisez des expressions régulières pour résoudre l'exercice 1. Vous pouvez utiliser RegEx101 pour écrire l'expression régulière. (1p)
  6. Utilisez des expressions régulières pour résoudre l'exercice 3. (1p)
  7. Utilisez des expressions régulières pour résoudre l'exercice 4. (1p)
  8. Lisez le fichier java_errors et affichez:
    1. combien d'erreurs il y a (0.5p)
    2. combien de notes il y a (0.5p)
    3. Stockez les informations dans un tableau au format suivant: (0.5p)
      [
         {
            "type":"error" or "note",
            "line":<line_number if it exists>,
            "filename":<file_name if it exists>,
            "description":<the error or note description>
         },
         ...
      ]
    4. Ecrivez le tableau dans un fichier (indice: JSON.stringify) (0.5p)
  9. Ecrivez un programme qui reçoit en paramètre un fichier java (ex: applet.java). Lire le fichier
    1. afficher les bibliothèques qu'il importe (0.3p)
    2. afficher toutes les classes qu'il déclare (0.3p)
    3. afficher tous les clases qu'il déclare (nom et et la classe qu'il étend) (0.1p)
    4. afficher toutes les fonctions qu'il déclare (nom et type de retour) (0.3p)
  10. Bonus: Créez un projet nodejs qui reçoit en paramètre un fichier java et crée un tableau avec des objets pour chacune des classes qu'il déclare. Chaque objet a le format suivant (1p):
    {
      "name":<name of class>,
      "extends":<name of class it extends>,
      "functions": [
         {
            "name":<function_name>,
            "return_type":<function_return type>,
            "parameters":<number of parameters>
         },
         ...
       ]
    }
alf/laboratoare/03.1551783352.txt.gz · Last modified: 2019/03/05 12:55 by alexandru.radovici
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