Table of Contents

TP 2 - Strings et Regex

Assignment

Vous devez accepter l'assignment d'ici est travailler avec ce repository: Lab 2

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)
{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 doit declarer les deux classes Pattern et Matcher qui sont disponibles dans la bibliotheque java.util.regex.

import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public class Main {
    public static void main(String[] args) {
        Pattern pattern = Pattern.compile("hello", Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher("Hello World!");
        boolean matchFound = matcher.find();
        if(matchFound) {
            System.out.println("Match found");
        } else {
            System.out.println("Match not found");
        }
    }
}

Voir aussi la documentation des classes: Pattern, et Matcher.

Fonctions supplémentaires

Fonctions pour les chaînes de caractères avec Regex

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 Java 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 une classe Entreprise avec les détails de celle-ci. La méthode de creer les objets 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. 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)