Java Regex - מהם ביטויים רגולריים וכיצד להשתמש בו?



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

חילוץ או אימות נתונים הם היבט חשוב בכל שפת תכנות. אחת הדרכים הפופולריות ביותר לאימות נתונים היא באמצעות ביטויים רגולריים. משתמש באלהביטויים קבועים לתיאור דפוס של דמויות. מאמר זה על ג'אווה רגקס יפרט את השיטות השונות לשימוש בביטויים ברצף הבא:

בואו נתחיל!





מהם ביטויים רגילים?

ל הבעה רגילה הוא רצף תווים הבונה דפוס חיפוש. כשאתה מחפש נתונים בטקסט, אתה יכול להשתמש בדפוס חיפוש זה כדי לתאר את מה שאתה מחפש.

ביטויים רגולריים - Java Regex - Edureka



ביטוי קבוע יכול להיות א דמות יחידה או דפוס מסובך יותר. ניתן להשתמש בו לכל סוג של חיפוש טקסט ופעולות החלפת טקסט. דפוס Regex מורכב מדמויות פשוטות, כגון / א ב ג / , או שילוב של תווים פשוטים ומיוחדים, כגון /א ב ג/ אוֹ / דוגמה(d+).d*/ .

מה זה Java Regex?

ה ג'אווה רגקס הוא ממשק API שרגיל להגדיר דפוס לחיפוש או מניפולציה . נעשה בו שימוש נרחב כדי להגדיר את האילוץ על מחרוזות כגון אימות סיסמא ואימייל.

ישנן שיטות שונות לשימוש ב- Java Regex. אז בואו נתקדם ונסתכל על הביטויים השונים.



כיתת התאמה

מחלקה זו משמשת לביצוע פעולות התאמה על רצף תווים. הטבלה שלהלן מייצגת שיטות שונות בכיתת התאמה.

שיטה תיאור
גפרורים בוליאניים () בודק אם הביטוי הרגולרי הנתון תואם לתבנית
ממצא בוליאני () משמש למציאת הביטוי הבא התואם לתבנית
מציאה בוליאנית (התחלה int) מחפש בביטוי הבא התואם לתבנית ממספר ההתחלה הנתון
קבוצת מחרוזות () משמש להחזרת התוצאה המותאמת
התחל int () מחזיר את אינדקס ההתחלה של המשך המותאם
סוף int () מחזיר את אינדקס הסיום של המשך המותאם
int groupCount () מחזירה את המספר הכולל של ההמשך התואם

כיתת תבניות

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

שיטה תיאור
הידור דפוס סטטי (מחרוזת regex) הוא מרכיב את ה- regex הנתון ומחזיר את מופע התבנית
תואם התאמות (קלט CharSequence) הוא משמש ליצירת התאמה שתואמת את הקלט הנתון לתבנית
התאמות בוליאניות סטטיות (regex מחרוזת, קלט CharSequence) זה עובד כשילוב של שיטות קומפילציה והתאמה. הוא מרכיב את הביטוי הרגולרי ומתאים את הקלט הנתון לתבנית
מחרוזת [] פיצול (קלט CharSequence) משמש לפיצול מחרוזת הקלט הנתונה סביב התאמות של תבנית נתונה
דפוס מחרוזת () עוזר להחזיר את דפוס ה- regex

בואו ניקח דוגמא קטנה כדי להבין כיצד כותבים ביטוי רגולרי.

ייבא java.util.regex. * מחלקה ציבורית RegexExample {public static void main (String [] args) {Pattern pattern = Pattern.compile ('. xx.') Matcher matcher = pattern.matcher ('AxxB') System.out .println ('מחרוזת תואמת את ה- Regex הנתון - + matcher.matches ())}}

במקרה זה, באופן פנימי הוא משתמש ב- Pattern and Matcher שיעורי regex שיעשו את העיבוד אבל ברור,זה מקטין את שורות הקוד. מחלקת תבניות מכילה גם שיטת התאמות שלוקחת regex והקלדת מחרוזת כארגומנט ומחזירה תוצאה בוליאנית לאחר התאמתם. אז הקוד עובד בסדר להתאמת קלט עם ביטוי רגולרי בג'אווה. מכאן שהפלט יהיה נכון כפי שמוצג להלן.

צד מפה מצטרף לכוורת

תְפוּקָה:
נָכוֹן

עכשיו בואו נראה עוד כמה קטגוריות של Java Regular Expressions.

מחלקת תווים של רגקס

הטבלה שלמטה מייצגת את השילוב השונה של כיתות התווים.

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

דוגמא:

ייבא java.util.regex. * class class CharacterExample {public static void main (String args []) {// false (not x or y or z) System.out.println (Pattern.matches ('[xyz]', 'wbcd')) // נכון (בין x או y או z) System.out.println (Pattern.matches ('[xyz]', 'x')) // false (x ו- y מגיע יותר מפעם אחת) מערכת .out.println (Pattern.matches ('[xyz]', 'xxyyyyyz'))}}

מכימות Regex

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

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

דוגמא:

ייבא java.util.regex. * מחלקה ציבורית דוגמה {public static void main (String args []) {System.out.println ('? quantifier ....') // (a or y or z מגיע פעם אחת) System.out.println (Pattern.matches ('[ayz]?', 'A')) // פלט: System.out.println true (Pattern.matches ('[ayz]?', 'Aaa')) / / (ay ו- z מגיע יותר מפעם אחת) System.out.println (Pattern.matches ('[ayz]?', 'ayyyyzz')) // פלט: false // (a מגיע יותר מפעם אחת) מערכת. out.println (Pattern.matches ('[ayz]?', 'amnta')) // פלט: false // (a או y או z חייבים להגיע פעם אחת) System.out.println (Pattern.matches ('[ ayz]? ',' ay ')) // פלט: שקר System.out.println (' + כימות .... ') // (a או y או z פעם או יותר) System.out.println (תבנית .matches ('[ayz] +', 'a')) // פלט: true // (a מגיע יותר מפעם אחת) System.out.println (Pattern.matches ('[ayz] +', 'aaa' )) // outpu: true // (a או y או z מגיעים יותר מפעם אחת) System.out.println (Pattern.matches ([amn] + ',' aayyyzz ')) // output: true // (z ו- t אינם תואמים דפוס) System.out.println (Pat tern.matches ('[ayz] +', 'aammta')) // פלט: שקר System.out.println ('* כימות ....') // (a או y או z עשויים להגיע לאפס או יותר ) System.out.println (Pattern.matches ('[ayz] *', 'ayyyza')) // פלט: true}}

בעיקרון, הוא יחפש את הכמת התואם ותואם את תוצאת החיפוש.

Regex Metacharacters

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

רגקסתיאור
. זה יכול להיות כל דמות (עשויה להתאים לסוף שליחות)
ד מייצג ספרות כלשהן, פחות מ- [0-9]
ד מייצג כל שאינו ספרתי, קיצור של [^ 0-9]
ס מייצג כל תו לבן, בקיצור [tnx0Bfr]
ס זה יכול להיות תו שאינו לבן, קיצור של [^ s]
ב זה יכול להיות תו מילה, בקיצור [a-zA-Z_0-9]
IN מייצג כל תו שאינו מילה, קיצור של [^ w]
ב מייצג גבול מילים
ב זהו גבול שאינו מילים

דוגמא:

ייבא java.util.regex. * מחלקה ציבורית MetacharExample {public static void main (String args []) {// d פירושו ספרתי System.out.println ('metacharacters d ....') // (לא ספרתי) System.out.println (Pattern.matches ('d', 'abc')) // פלט: false // (ספרה ומגיעה פעם אחת) System.out.println (Pattern.matches ('d', '1') ) // פלט: נכון // (ספרה אך מגיע יותר מפעם אחת) System.out.println (Pattern.matches ('d', '4443')) // Output: false // (digit and char) System.out .println (Pattern.matches ('d', '323abc')) // פלט: שקר // D פירושו מערכת לא ספרתית. out.println ('מטא-תווים D ....') // (לא ספרתי אבל מגיע יותר מפעם אחת) System.out.println (Pattern.matches ('D', 'abc')) // Output: false // Its a System System.out.println (Pattern.matches ('D', '1 ')) // פלט: שקר System.out.println (Pattern.matches (' D ',' 4443 ')) // Output: false // (digit and char) System.out.println (Pattern.matches (' D ',' 323abc ')) // פלט: שקר // (לא ספרתי ומגיע פעם אחת) System.out.println (Pattern.matches (' D ',' m ')) // פלט: System.out נכון .יחסי ציבור intln ('מטא-תווים D עם כימות ....') // (לא ספרתי ועשוי להגיע 0 או יותר) System.out.println (Pattern.matches ('D *', 'abc')) // פלט : נכון}}

בהתבסס על התנאים הנ'ל, הוא יציג את הפלט. זה איך שזה עובד. אז, זה היה הכל על סוגים שונים של רגקס. בכך אנו מגיעים לסוף מאמר זה. אנימקווה שמצאת את זה אינפורמטיבי. אם ברצונך ללמוד עוד, תוכל לבדוק את האתר שלנו גם כן.

בדוק את מאת אדוריקה, חברת למידה מקוונת מהימנה עם רשת של יותר מ -250,000 לומדים מרוצים הפרוסים ברחבי העולם. אנו כאן כדי לעזור לך בכל שלב בדרכך, ולהיות מלבד שאלות ראיונות אלה ב- Java, אנו מגישים תוכנית לימודים המיועדת לסטודנטים ואנשי מקצוע המעוניינים להיות מפתח Java.

כיצד ליצור מערך של אובייקטים

יש לך שאלה עבורנו? אנא הזכיר זאת בסעיף ההערות במאמר 'Java Regex' זה ונחזור אליך בהקדם האפשרי.