logo

Java Regex

ה Java Regex או ביטוי רגולרי הוא API ל להגדיר דפוס לחיפוש או מניפולציה של מחרוזות .

הוא נמצא בשימוש נרחב כדי להגדיר את האילוץ על מחרוזות כגון אימות סיסמה ואימייל. לאחר לימוד הדרכה של Java Regex, תוכל לבדוק את הביטויים הרגולריים שלך על ידי הכלי Java Regex Tester.

Java Regex API מספק ממשק אחד ו-3 מחלקות ב java.util.regex חֲבִילָה.

חבילת java.util.regex

מחלקות Matcher ו-Pattern מספקות את המתקן של ביטוי רגולרי של Java. החבילה java.util.regex מספקת מחלקות וממשקים הבאים לביטויים רגולריים.

  1. ממשק MatchResult
  2. כיתת התאמה
  3. כיתת דפוסים
  4. מחלקה PatternSyntaxException
Java Regex API

כיתת התאמה

הוא מיישם את תוצאה של התאמה מִמְשָׁק. זה מנוע regex המשמש לביצוע פעולות התאמה על רצף תווים.

לא.שיטהתיאור
1התאמות בוליאניות()בדוק אם הביטוי הרגולרי מתאים לתבנית.
2מצא בוליאני()מוצא את הביטוי הבא שמתאים לתבנית.
3חיפוש בוליאני (int start)מוצא את הביטוי הבא שתואם את התבנית ממספר ההתחלה הנתון.
4קבוצת מחרוזות ()מחזירה את רצף המשנה המותאם.
5int start()מחזירה את המדד ההתחלתי של רצף המשנה המותאם.
6int end()מחזירה את אינדקס הסיום של רצף המשנה המותאם.
7int groupCount()מחזירה את המספר הכולל של רצף המשנה המותאם.

כיתת דפוסים

זה גרסה מהודרת של ביטוי רגולרי . הוא משמש להגדרת תבנית עבור מנוע הרקס.

לא.שיטהתיאור
1קומפילציה של דפוס סטטי (מחרוזת רגילה)מרכיב את ה-Regex הנתון ומחזיר את המופע של ה-Pattern.
2Matcher matcher (קלט CharSequence)יוצר תואם התואם את הקלט הנתון עם התבנית.
3התאמות בוליאניות סטטיות (מחרוזת רגקס, קלט CharSequence)זה עובד כשילוב של שיטות קומפילציה והתאמה. הוא מרכיב את הביטוי הרגולרי ומתאים את הקלט הנתון לדפוס.
4פיצול מחרוזת[](קלט CharSequence)מפצל את מחרוזת הקלט הנתונה סביב התאמות של דפוס נתון.
5תבנית מחרוזת ()מחזירה את תבנית הביטוי הרגולרי.

דוגמה לביטויים רגולריים של Java

ישנן שלוש דרכים לכתוב את הדוגמה הרגולרית ב-Java.

 import java.util.regex.*; public class RegexExample1{ public static void main(String args[]){ //1st way Pattern p = Pattern.compile('.s');//. represents single character Matcher m = p.matcher('as'); boolean b = m.matches(); //2nd way boolean b2=Pattern.compile('.s').matcher('as').matches(); //3rd way boolean b3 = Pattern.matches('.s', 'as'); System.out.println(b+' '+b2+' '+b3); }} 
בדוק את זה עכשיו

תְפוּקָה

 true true true 

הבעה רגילה . דוגמא

ה . (נקודה) מייצגת תו בודד.

 import java.util.regex.*; class RegexExample2{ public static void main(String args[]){ System.out.println(Pattern.matches('.s', 'as'));//true (2nd char is s) System.out.println(Pattern.matches('.s', 'mk'));//false (2nd char is not s) System.out.println(Pattern.matches('.s', 'mst'));//false (has more than 2 char) System.out.println(Pattern.matches('.s', 'amms'));//false (has more than 2 char) System.out.println(Pattern.matches('..s', 'mas'));//true (3rd char is s) }} 
בדוק את זה עכשיו

שיעורי דמות רגקס

לא.כיתת דמותתיאור
1[א ב ג]a, b או c (מחלקה פשוטה)
2[^abc]כל תו מלבד a, b או c (שלילה)
3[a-zA-Z]a עד z או A עד Z, ​​כולל (טווח)
4[א-ד[מ-פ]]a עד d, או m עד p: [a-dm-p] (איחוד)
5[a-z&&[def]]d, e או f (צומת)
6[a-z&&[^bc]]a עד z, מלבד b ו-c: [ad-z] (חיסור)
7[a-z&&[^m-p]]a עד z, ולא m עד p: [a-lq-z](חיסור)

דוגמה לשיעורי ביטוי רגיל

 import java.util.regex.*; class RegexExample3{ public static void main(String args[]){ System.out.println(Pattern.matches('[amn]', 'abcd'));//false (not a or m or n) System.out.println(Pattern.matches('[amn]', 'a'));//true (among a or m or n) System.out.println(Pattern.matches('[amn]', 'ammmna'));//false (m and a comes more than once) }} 
בדוק את זה עכשיו

כימות רגקס

המכמתים מציינים את מספר המופעים של תו.

Regexתיאור
איקס?X מופיע פעם אחת או בכלל לא
X+X מופיע פעם אחת או יותר
איקס*X מופיע אפס או יותר פעמים
X{n}X מופיע n פעמים בלבד
X{n,}X מופיע n פעמים או יותר
X{y,z}X מופיע לפחות y פעמים אבל פחות מ-z פעמים

מחלקות אופי ביטוי רגולרי ומכמתים לדוגמה

 import java.util.regex.*; class RegexExample4{ public static void main(String args[]){ System.out.println('? quantifier ....'); System.out.println(Pattern.matches('[amn]?', 'a'));//true (a or m or n comes one time) System.out.println(Pattern.matches('[amn]?', 'aaa'));//false (a comes more than one time) System.out.println(Pattern.matches('[amn]?', 'aammmnn'));//false (a m and n comes more than one time) System.out.println(Pattern.matches('[amn]?', 'aazzta'));//false (a comes more than one time) System.out.println(Pattern.matches('[amn]?', 'am'));//false (a or m or n must come one time) System.out.println('+ quantifier ....'); System.out.println(Pattern.matches('[amn]+', 'a'));//true (a or m or n once or more times) System.out.println(Pattern.matches('[amn]+', 'aaa'));//true (a comes more than one time) System.out.println(Pattern.matches('[amn]+', 'aammmnn'));//true (a or m or n comes more than once) System.out.println(Pattern.matches('[amn]+', 'aazzta'));//false (z and t are not matching pattern) System.out.println('* quantifier ....'); System.out.println(Pattern.matches('[amn]*', 'ammmna'));//true (a or m or n may come zero or more times) }} 
בדוק את זה עכשיו

Regex Metacharacters

המטא-תווים של הביטוי הרגולרי פועלים כקודים קצרים.

Regexתיאור
.כל תו (ייתכן או לא תואם ל-terminator)
דכל ספרות, קצרות מ-[0-9]
Dכל לא ספרתי, קיצור של [^0-9]
sכל תו לבן, קיצור של [ x0Bf ]
Sכל תו שאינו רווח לבן, קיצור של [^s]
Inכל תו מילה, קיצור של [a-zA-Z_0-9]
INכל תו שאינו מילה, קיצור של [^w]
בגבול מילה
Bגבול לא מילים

דוגמה למטא-תווים של ביטוי רגולרי

 import java.util.regex.*; class RegexExample5{ public static void main(String args[]){ System.out.println('metacharacters d....');\d means digit System.out.println(Pattern.matches('\d', 'abc'));//false (non-digit) System.out.println(Pattern.matches('\d', '1'));//true (digit and comes once) System.out.println(Pattern.matches('\d', '4443'));//false (digit but comes more than once) System.out.println(Pattern.matches('\d', '323abc'));//false (digit and char) System.out.println('metacharacters D....');\D means non-digit System.out.println(Pattern.matches('\D', 'abc'));//false (non-digit but comes more than once) System.out.println(Pattern.matches('\D', '1'));//false (digit) System.out.println(Pattern.matches('\D', '4443'));//false (digit) System.out.println(Pattern.matches('\D', '323abc'));//false (digit and char) System.out.println(Pattern.matches('\D', 'm'));//true (non-digit and comes once) System.out.println('metacharacters D with quantifier....'); System.out.println(Pattern.matches('\D*', 'mak'));//true (non-digit and may come 0 or more times) }} 
בדוק את זה עכשיו

ביטוי רגיל שאלה 1

 /*Create a regular expression that accepts alphanumeric characters only. Its length must be six characters long only.*/ import java.util.regex.*; class RegexExample6{ public static void main(String args[]){ System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'arun32'));//true System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'kkvarun32'));//false (more than 6 char) System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'JA2Uk2'));//true System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'arun$2'));//false ($ is not matched) }} 

בדוק את זה עכשיו

ביטוי רגיל שאלה 2

 /*Create a regular expression that accepts 10 digit numeric characters starting with 7, 8 or 9 only.*/ import java.util.regex.*; class RegexExample7{ public static void main(String args[]){ System.out.println('by character classes and quantifiers ...'); System.out.println(Pattern.matches('[789]{1}[0-9]{9}', '9953038949'));//true System.out.println(Pattern.matches('[789][0-9]{9}', '9953038949'));//true System.out.println(Pattern.matches('[789][0-9]{9}', '99530389490'));//false (11 characters) System.out.println(Pattern.matches('[789][0-9]{9}', '6953038949'));//false (starts from 6) System.out.println(Pattern.matches('[789][0-9]{9}', '8853038949'));//true System.out.println('by metacharacters ...'); System.out.println(Pattern.matches('[789]{1}\d{9}', '8853038949'));//true System.out.println(Pattern.matches('[789]{1}\d{9}', '3853038949'));//false (starts from 3) }} 
בדוק את זה עכשיו

דוגמה ל-Java Regex Finder

 import java.util.regex.Pattern; import java.util.Scanner; import java.util.regex.Matcher; public class RegexExample8{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); while (true) { System.out.println('Enter regex pattern:'); Pattern pattern = Pattern.compile(sc.nextLine()); System.out.println('Enter text:'); Matcher matcher = pattern.matcher(sc.nextLine()); boolean found = false; while (matcher.find()) { System.out.println('I found the text '+matcher.group()+' starting at index '+ matcher.start()+' and ending at index '+matcher.end()); found = true; } if(!found){ System.out.println('No match found.'); } } } } 

תְפוּקָה:

 Enter regex pattern: java Enter text: this is java, do you know java I found the text java starting at index 8 and ending at index 12 I found the text java starting at index 26 and ending at index 30