Expressions régulières Java
Qu'est-ce qu'une expression régulière ?
Une expression régulière est une séquence de caractères qui forme un modèle de recherche. Lorsque vous recherchez des données dans un texte, vous pouvez utiliser ce modèle de recherche pour décrire ce que vous recherchez.
Une expression régulière peut être un caractère unique ou un modèle plus compliqué.
Les expressions régulières peuvent être utilisées pour effectuer tous les types d' opérations de recherche et de remplacement de texte .
Java n'a pas de classe d'expression régulière intégrée, mais nous pouvons importer le java.util.regex
package pour travailler avec des expressions régulières. Le forfait comprend les cours suivants :
Pattern
Classe - Définit un modèle (à utiliser dans une recherche)Matcher
Classe - Utilisé pour rechercher le motifPatternSyntaxException
Classe - Indique une erreur de syntaxe dans un modèle d'expression régulière
Exemple
Découvrez s'il y a des occurrences du mot "w3schools" dans une phrase :
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("w3schools", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher("Visit W3Schools!");
boolean matchFound = matcher.find();
if(matchFound) {
System.out.println("Match found");
} else {
System.out.println("Match not found");
}
}
}
// Outputs Match found
Exemple expliqué
Dans cet exemple, le mot "w3schools" est recherché dans une phrase.
Tout d'abord, le motif est créé à l'aide de la Pattern.compile()
méthode. Le premier paramètre indique quel modèle est recherché et le second paramètre a un indicateur pour indiquer que la recherche doit être insensible à la casse. Le deuxième paramètre est facultatif.
La matcher()
méthode est utilisée pour rechercher le motif dans une chaîne. Elle renvoie un objet Matcher qui contient des informations sur la recherche qui a été effectuée.
La find()
méthode renvoie vrai si le motif a été trouvé dans la chaîne et faux s'il n'a pas été trouvé.
Drapeaux
Les indicateurs dans la compile()
méthode modifient la manière dont la recherche est effectuée. En voici quelques-uns :
Pattern.CASE_INSENSITIVE
- La casse des lettres sera ignorée lors d'une recherche.Pattern.LITERAL
- Les caractères spéciaux du modèle n'auront aucune signification particulière et seront traités comme des caractères ordinaires lors de l'exécution d'une recherche.Pattern.UNICODE_CASE
- Utilisez-le avec leCASE_INSENSITIVE
drapeau pour ignorer également la casse des lettres en dehors de l'alphabet anglais
Modèles d'expressions régulières
Le premier paramètre de la Pattern.compile()
méthode est le motif. Il décrit ce qui est recherché.
Les parenthèses sont utilisées pour trouver une plage de caractères :
Expression | Description |
---|---|
[abc] | Find one character from the options between the brackets |
[^abc] | Find one character NOT between the brackets |
[0-9] | Find one character from the range 0 to 9 |
Métacaractères
Les métacaractères sont des caractères ayant une signification particulière :
Metacharacter | Description |
---|---|
| | Find a match for any one of the patterns separated by | as in: cat|dog|fish |
. | Find just one instance of any character |
^ | Finds a match as the beginning of a string as in: ^Hello |
$ | Finds a match at the end of the string as in: World$ |
\d | Find a digit |
\s | Find a whitespace character |
\b | Find a match at the beginning of a word like this: \bWORD, or at the end of a word like this: WORD\b |
\uxxxx | Find the Unicode character specified by the hexadecimal number xxxx |
Quantificateurs
Les quantificateurs définissent les quantités :
Quantifier | Description |
---|---|
n+ | Matches any string that contains at least one n |
n* | Matches any string that contains zero or more occurrences of n |
n? | Matches any string that contains zero or one occurrences of n |
n{x} | Matches any string that contains a sequence of X n's |
n{x,y} | Matches any string that contains a sequence of X to Y n's |
n{x,} | Matches any string that contains a sequence of at least X n's |
Remarque : Si votre expression doit rechercher l'un des caractères spéciaux, vous pouvez utiliser une barre oblique inverse ( \ ) pour les échapper. En Java, les barres obliques inverses dans les chaînes doivent elles-mêmes être échappées, donc deux barres obliques inverses sont nécessaires pour échapper les caractères spéciaux. Par exemple, pour rechercher un ou plusieurs points d'interrogation, vous pouvez utiliser l'expression suivante : "\\?"