Qu'est-ce qu'un modèle RegEx (expression régulière) ? Comment l'utiliser en Java ? Exemple joint
Publié: 2021-01-25
Qu'est-ce que RegEx ?
L'expression régulière est un modèle de recherche pour String. java.util.regex
Classes pour faire correspondre des séquences de caractères avec des modèles spécifiés par des expressions régulières en Java.
Vous pouvez utiliser Regex pour :
- Recherche de texte
- Extraire du texte
- Modification du texte
Discutons de la syntaxe de base :
Classes de caractères dans Regex :
1 2 3 4 5 6 7 |
. Dot , any character ( may or may not match line terminators , read on ) \ d A digit : [ 0 - 9 ] \ D A non - digit : [ ^ 0 - 9 ] \ s A whitespace character : [ \ t \ n \ x0B \ f \ r ] \ S A non - whitespace character : [ ^ \ s ] \ w A word character : [ a - zA - Z_0 - 9 ] \ W A non - word character : [ ^ \ w ] |
Quantificateurs dans Regex :
1 2 3 4 5 6 |
* Match 0 or more times + Match 1 or more times ? Match 1 or 0 times { n } Match exactly n times { n , } Match at least n times { n , m } Match at least n but not more than m times |
Java Split est également un exemple Regex.
Méta-caractères dans Regex :
1 2 3 4 5 6 7 |
\ Escape the next meta - character ( it becomes a normal / literal character ) ^ Match the beginning of the line . Match any character ( except newline ) $ Match the end of the line ( or before newline at the end ) | Alternation ( ‘ or ’ statement ) ( ) Grouping [ ] Custom character class |
Commençons à travailler sur l'exemple. Dans l'exemple ci-dessous, nous passerons en revue 5 exemples de Regex différents.
- Comment analyser le résultat de la commande de disponibilité en Java
- Vérifiez si l'URL se termine par une extension spécifique
- Vérifiez si une adresse IP valide est présente
- Exemple de remplacement de Regex()
- Rechercher si le SSN est valide
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
package crunchify . com . tutorial ; import java . util . regex . Matcher ; import java . util . regex . Pattern ; /** * @author Crunchify.com * */ public class CrunchifyRegexTutorial { public static void main ( String [ ] args ) { crunchifyLoadAndAverageRegex ( ) ; System . out . println ( "\n==========================\n" ) ; crunchifyFindUrlPattern ( ) ; System . out . println ( "\n==========================\n" ) ; crunchifyFindIPMatcher ( ) ; System . out . println ( "\n==========================\n" ) ; crunchifyRegexReplaceAllExample ( ) ; System . out . println ( "\n==========================\n" ) ; crunchifyValidateSSN ( ) ; } // Find if SSN is valid private static void crunchifyValidateSSN ( ) { String ssn1 = "123-45-6789" ; String ssn2 = "123-456-789" ; String pattern = "^(\\d{3}-?\\d{2}-?\\d{4})$" ; if ( ssn1 . matches ( pattern ) ) { System . out . println ( "SSN " + ssn1 + " is valid" ) ; } else { System . out . println ( "SSN " + ssn1 + " is NOT valid" ) ; } if ( ssn2 . matches ( pattern ) ) { System . out . println ( "SSN " + ssn2 + " is valid" ) ; } else { System . out . println ( "SSN " + ssn2 + " is NOT valid" ) ; } } // ReplaceAll() Example private static void crunchifyRegexReplaceAllExample ( ) { String find = "Java" ; String line = "This is Crunchify.com Java Tutorial." ; String replace = "Spring MVC" ; Pattern p = Pattern . compile ( find ) ; Matcher m = p . matcher ( line ) ; // This line will find "Java" and replace it with "Spring MVC" line = m . replaceAll ( replace ) ; System . out . println ( line ) ; } // Check if valid IP present private static void crunchifyFindIPMatcher ( ) { Pattern validIPPattern = Pattern . compile ( "^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}$" ) ; System . out . println ( "192.abc.0.1 : " + validIPPattern . matcher ( "192.abc.0.1" ) . find ( ) ) ; System . out . println ( "192.168.0.1 : " + validIPPattern . matcher ( "192.168.0.1" ) . find ( ) ) ; } // Check if URL ends with specific extension private static void crunchifyFindUrlPattern ( ) { String pattern = ".*\\.(ico|jpg|png|gif|tif|bmp|JPG|PNG|GIF|TIF|BMP)" ; Pattern r = Pattern . compile ( pattern ) ; Matcher m = r . matcher ( "https://crunchify.com/favicon.ico" ) ; if ( m . find ( ) ) { System . out . println ( "URL pattern found" ) ; } else { System . out . println ( "URL pattern doesn't found" ) ; } } // How to Parse "uptime" command result in Java public static void crunchifyLoadAndAverageRegex ( ) { Pattern uptimePattern = Pattern . compile ( "^.*\\s+load\\s+average:\\s+([\\d\\.]+),\\s+([\\d\\.]+),\\s+([\\d\\.]+)$" ) ; String output = " 10:17:32 up 189 days, 18:49, 5 user, load average: 2.07, 1.11, 1.16" ; Matcher m = uptimePattern . matcher ( output ) ; if ( m . matches ( ) ) { final double crunchify1MinuteLoadAvg = Double . parseDouble ( m . group ( 1 ) ) ; final double crunchify5eMinuteloadAvg = Double . parseDouble ( m . group ( 2 ) ) ; final double crunchify15MinuteLoadAvg = Double . parseDouble ( m . group ( 3 ) ) ; System . out . println ( "Load Average 1 min: " + crunchify1MinuteLoadAvg ) ; System . out . println ( "Load Average 5 min: " + crunchify5eMinuteloadAvg ) ; System . out . println ( "Load Average 15 min: " + crunchify15MinuteLoadAvg ) ; } else { System . out . println ( "no matches found" ) ; } } } |
Sortir:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Load Average 1 min : 2.07 Load Average 5 min : 1.11 Load Average 15 min : 1.16 ========================== URL pattern found ========================== 192.abc.0.1 : false 192.168.0.1 : true ========================== This is Crunchify . com Spring MVC Tutorial . ========================== SSN 123 - 45 - 6789 is valid SSN 123 - 456 - 789 is NOT valid |
Comment valider la force du mot de passe à l'aide de Java Code ?
Retrouvez ci-dessous mes conditions :
1 2 3 4 5 6 |
# must contains one digit from 0-9 ( ? = . * [ a - z ] ) must contains one lowercase characters ( ? = . * [ A - Z ] ) must contains one uppercase characters ( ? = . * [ ! @ #$%]) must contains one special symbols in the list "!@#$%" . match anything with previous condition checking { 8 , 25 } length at least 8 characters and maximum of 25 |
CrunchifyPasswordVerification.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
package crunchify . com . tutorial ; import java . util . ArrayList ; import java . util . List ; import java . util . regex . Matcher ; import java . util . regex . Pattern ; /** * @author Crunchify.com * */ public class CrunchifyPasswordVerification { public static void main ( String [ ] args ) { String pattern = "((?=.*[@!#$%])(?=.*[a-z])(?=.*[A-Z])(?=.*\\d).{8,22})" ; Pattern r = Pattern . compile ( pattern ) ; List <String> input = new ArrayList <String> ( ) ; input . add ( "Crunchify" ) ; input . add ( "Crunchify123#" ) ; input . add ( "crunchify123#" ) ; input . add ( "crunchify** " ) ; input . add ( "Crunchify123!!" ) ; for ( String password : input ) { Matcher m = r . matcher ( password ) ; if ( m . matches ( ) ) System . out . println ( "Password: " + password + " is valid" ) ; else System . out . println ( "Password: " + password + " is NOT valid" ) ; } } } |
Résultat:

1 2 3 4 5 |
Password: Crunchify is NOT valid Password: Crunchify123# is valid Password: crunchify123# is NOT valid Password: crunchify** is NOT valid Password: Crunchify123!! is valid |