Regular Expressions
Modèles simples assortis
Recherche…
Faire correspondre un caractère à un chiffre avec [0-9] ou \ d (Java)
[0-9]
et \d
sont des modèles équivalents (à moins que votre moteur Regex ne soit unicode et que \d
corresponde également à des choses comme ②). Ils correspondent tous deux à un caractère à un seul chiffre afin que vous puissiez utiliser la notation que vous trouvez plus lisible.
Créez une chaîne du motif que vous souhaitez faire correspondre. Si vous utilisez la notation \ d, vous devrez ajouter une deuxième barre oblique inverse pour échapper à la première barre oblique inverse.
String pattern = "\\d";
Créez un objet Pattern. Transmettez la chaîne de modèle dans la méthode compile ().
Pattern p = Pattern.compile(pattern);
Créez un objet Matcher. Passez la chaîne que vous cherchez à trouver le modèle dans la méthode matcher (). Vérifiez si le motif est trouvé.
Matcher m1 = p.matcher("0");
m1.matches(); //will return true
Matcher m2 = p.matcher("5");
m2.matches(); //will return true
Matcher m3 = p.matcher("12345");
m3.matches(); //will return false since your pattern is only for a single integer
Matching différents numéros
[ab]
où a et b sont des chiffres compris entre 0
et 9
[3-7] will match a single digit in the range 3 to 7.
Faire correspondre plusieurs chiffres
\d\d will match 2 consecutive digits
\d+ will match 1 or more consecutive digits
\d* will match 0 or more consecutive digits
\d{3} will match 3 consecutive digits
\d{3,6} will match 3 to 6 consecutive digits
\d{3,} will match 3 or more consecutive digits
Le \d
dans les exemples ci-dessus peut être remplacé par une plage de numéros:
[3-7][3-7] will match 2 consecutive digits that are in the range 3 to 7
[3-7]+ will match 1 or more consecutive digits that are in the range 3 to 7
[3-7]* will match 0 or more consecutive digits that are in the range 3 to 7
[3-7]{3} will match 3 consecutive digits that are in the range 3 to 7
[3-7]{3,6} will match 3 to 6 consecutive digits that are in the range 3 to 7
[3-7]{3,} will match 3 or more consecutive digits that are in the range 3 to 7
Vous pouvez également sélectionner des chiffres spécifiques:
[13579] will only match "odd" digits
[02468] will only match "even" digits
1|3|5|7|9 another way of matching "odd" digits - the | symbol means OR
Numéros correspondants dans des plages contenant plus d'un chiffre:
\d|10 matches 0 to 10 single digit OR 10. The | symbol means OR
[1-9]|10 matches 1 to 10 digit in range 1 to 9 OR 10
[1-9]|1[0-5] matches 1 to 15 digit in range 1 to 9 OR 1 followed by digit 1 to 5
\d{1,2}|100 matches 0 to 100 one to two digits OR 100
Numéros correspondants qui divisent par d'autres numéros:
\d*0 matches any number that divides by 10 - any number ending in 0
\d*00 matches any number that divides by 100 - any number ending in 00
\d*[05] matches any number that divides by 5 - any number ending in 0 or 5
\d*[02468] matches any number that divides by 2 - any number ending in 0,2,4,6 or 8
faire correspondre les nombres qui divisent par 4 - tout nombre égal à 0, 4 ou 8 ou se terminant par 00, 04, 08, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60 , 64, 68, 72, 76, 80, 84, 88, 92 ou 96
[048]|\d*(00|04|08|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96)
Cela peut être raccourci. Par exemple, au lieu d'utiliser 20|24|28
nous pouvons utiliser 2[048]
. De même, comme les années 40, 60 et 80 ont le même schéma, nous pouvons les inclure: [02468][048]
et les autres ont aussi un motif [13579][26]
. Donc, toute la séquence peut être réduite à:
[048]|\d*([02468][048]|[13579][26]) - numbers divisible by 4
Les nombres correspondants qui n'ont pas de motif comme ceux divisibles par 2,4,5,10 etc. ne peuvent pas toujours être utilisés de manière succincte et vous devez généralement recourir à une série de chiffres. Par exemple, faire correspondre tous les nombres qui se divisent par 7 dans la plage de 1 à 50 peut être fait simplement en énumérant tous ces nombres:
7|14|21|28|35|42|49
or you could do it this way
7|14|2[18]|35|4[29]
Correspondant aux espaces de début / fin
Espaces de fuite
\s*$
: cela correspond à tout espace ( *
) ( \s
) à la fin ( $
) du texte
Espaces principaux
^\s*
: Cela correspondra à tout espace ( *
) ( \s
) au début ( ^
) du texte
Remarques
\s
est un métacaractère commun à plusieurs moteurs RegExp, et est destiné à capturer des caractères d'espaces (espaces, nouvelles lignes et onglets par exemple). Remarque : il ne capturera probablement pas tous les caractères d'espace Unicode . Vérifiez la documentation de vos moteurs pour en être sûr.
Correspond à n'importe quel flotteur
[\+\-]?\d+(\.\d*)?
Cela correspond à tout flottant signé, si vous ne voulez pas de signes ou si vous analysez une équation, supprimez [\+\-]?
vous avez donc \d+(\.\d+)?
Explication:
-
\d+
correspond à tout nombre entier -
()?
signifie que le contenu des parenthèses est facultatif mais doit toujours apparaître ensemble - '\.' allumettes "., nous devons y échapper depuis". correspond normalement à n'importe quel caractère
Donc cette expression correspondra
5
+5
-5
5.5
+5.5
-5.5
Sélection d'une certaine ligne dans une liste basée sur un mot à un certain endroit
J'ai la liste suivante:
1. Alon Cohen
2. Elad Yaron
3. Yaron Amrani
4. Yogev Yaron
Je veux choisir le prénom des gars avec le nom de famille Yaron.
Comme je ne me soucie pas du nombre, je le mets juste comme n'importe quel chiffre et un point et un espace correspondants après le début de la ligne, comme ceci: ^[\d]+\.\s
.
Maintenant, nous devons faire correspondre l'espace et le prénom, car nous ne pouvons pas dire s'il s'agit de lettres majuscules ou minuscules, nous allons simplement faire correspondre les deux: [a-zA-Z]+\s
ou [aZ]+\s
et peut aussi être [\w]+\s
.
Maintenant, nous allons spécifier le nom de famille requis pour obtenir uniquement les lignes contenant Yaron comme nom de famille (à la fin de la ligne): \sYaron$
.
Tout cela ensemble ^[\d]+\.\s[\w]+\sYaron$
.
Exemple en direct: https://regex101.com/r/nW4fH8/1