الكل في برنامج تعليمي Java Regex ونمط المطابق والتعبيرات العادية
نشرت: 2021-09-29
في هذا البرنامج التعليمي سوف ننتقل إلى قائمة واجهات برمجة التطبيقات (API) المطابق ( java.util.regex.Matcher
). لقد كتبت في وقت ما برنامجًا تعليميًا عن Java Regex يغطي مجموعة متنوعة من العينات.
التعبير العادي هو نمط بحث عن String. java.util.regex
فئات لمطابقة تسلسلات الأحرف مع الأنماط المحددة بواسطة التعبيرات العادية في Java.
يعمل هذا البرنامج التعليمي بشكل أفضل إذا كان لديك أي من الأسئلة التالية:
- Java Regex - برنامج تعليمي
- دروس Java العادية Expressions
- ما هو التعبير العادي في جافا؟
- ما هو النمط في جافا؟
- مثال على مُطابق نمط جافا وأحرف خاصة في التعبير العادي لجافا
هيا بنا نبدأ.
- قم بإنشاء فئة
CrunchifyPatternMatcherTutorial.java
- قم بإنشاء طرق مختلفة للتحقق أدناه من واجهات برمجة تطبيقات Matcher:
- اعواد الكبريت()
- انظر الى()
- findStartEnd ()
- مجموعة()
- مجموعات متعددة ()
- استبدال الكل ()
- نتيجة طباعة كل واجهات برمجة التطبيقات.
اعواد الكبريت()
matches()
يحاول مطابقة السلسلة بأكملها مع النمط. يعود true
إذا ، only if
، تطابق تسلسل المنطقة بالكامل نمط المطابق هذا.
انظر الى()
وظيفة lookingAt () هي نفسها تمامًا مثل المطابقات () إلا أنها تحاول مطابقة تسلسل الإدخال ، بدءًا من بداية المنطقة ، مقابل النمط. يعود صحيحًا إذا ، وفقط إذا ، تطابق بادئة تسلسل الإدخال نمط المطابق هذا.
البحث عن () والبدء () والنهاية ()
يحاول find()
إيجاد النتيجة التالية لتسلسل الإدخال الذي يتطابق مع النمط. يحاول start()
إرجاع فهرس البداية للمطابقة السابقة ويحاول end()
إرجاع فهرس النهاية للمباراة السابقة.
مجموعة()
تعيد group()
المدخلات اللاحقة المطابقة للمطابقة السابقة. إنها مثل التطابق بين البداية () والنهاية ().
مجموعات متعددة
يمكن تمثيل multiplegroups
بواسطة "(سلسلة) (سلسلة)".
العينة: String crunchifyPattern = "(is) (.+?) (.+?) " ;
استبدال الكل ()
يستبدل replaceAll()
كل تتابع لاحق من تسلسل الإدخال الذي يطابق النمط بسلسلة الاستبدال المحددة.
هنا مثال كامل:
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 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
package crunchify . com . tutorials ; import java . util . regex . Matcher ; import java . util . regex . Pattern ; /** * @author Crunchify.com * All in one Java Regex, Matcher Pattern and Regular Expressions Tutorial. */ public class CrunchifyPatternMatcherTutorial { public static void main ( String [ ] args ) { String crunchifyData = "This is Java Regex Pattern Example. https://crunchify.com. This is the list of all Matcher Example" ; System . out . println ( "This is sample data 'crunchifyData': " + crunchifyData ) ; crunchifyMatches ( crunchifyData ) ; crunchifyLookingAt ( crunchifyData ) ; crunchifyFindStartEnd ( crunchifyData ) ; String crunchifyData2 = "Crunchify is a Web company. Google is a Search company. Facebook is a social company." ; crunchifyGroup ( crunchifyData2 ) ; crunchifyMultipleGroups ( crunchifyData2 ) ; crunchifyReplaceAll ( crunchifyData2 ) ; } // crunchifyMatcher.replaceAll() private static void crunchifyReplaceAll ( String crunchifyData2 ) { String crunchifyPattern = "company" ; // Pattern: A compiled representation of a regular expression. // A regular expression, specified as a string, must first be compiled into an instance of this class. // The resulting pattern can then be used to create a Matcher object that can match arbitrary character sequences against the regular expression. // All of the state involved in performing a match resides in the matcher, so many matchers can share the same pattern. // compile(): Compiles the given regular expression into a pattern. Pattern pat = Pattern . compile ( crunchifyPattern ) ; // matcher(): Creates a matcher that will match the given input against this pattern. Matcher crunchifyMatcher = pat . matcher ( crunchifyData2 ) ; // replaceAll(): Replaces every subsequence of the input sequence that matches the pattern with the given replacement string. // This method first resets this matcher. It then scans the input sequence looking for matches of the pattern. Characters that are not part of any match are appended directly to the result string; each match is replaced in the result by the replacement string. // The replacement string may contain references to captured subsequences as in the appendReplacement method. String updatedString = crunchifyMatcher . replaceAll ( "best company" ) ; System . out . println ( "replaceAll() - updated String: " + updatedString ) ; } private static void crunchifyMultipleGroups ( String crunchifyData2 ) { String crunchifyPattern = "(is) (.+?) (.+?) " ; Pattern pat = Pattern . compile ( crunchifyPattern ) ; Matcher crunchifyMatcher = pat . matcher ( crunchifyData2 ) ; // find(): Attempts to find the next subsequence of the input sequence that matches the pattern. while ( crunchifyMatcher . find ( ) ) { // group(): Returns the input subsequence matched by the previous match. // For a matcher m with input sequence s, the expressions m.group() and s.substring(m.start(), m. end()) are equivalent. // Note that some patterns, for example a*, match the empty string. // This method will return the empty string when the pattern successfully matches the empty string in the input. System . out . println ( "multipleGroup() result: " + crunchifyMatcher . group ( ) ) ; } } // crunchifyMatcher.group() private static void crunchifyGroup ( String crunchifyData2 ) { String crunchifyPattern = "company" ; Pattern pat = Pattern . compile ( crunchifyPattern ) ; Matcher crunchifyMatcher = pat . matcher ( crunchifyData2 ) ; while ( crunchifyMatcher . find ( ) ) { System . out . println ( "group() result: " + crunchifyMatcher . group ( ) ) ; } } // crunchifyMatcher.find() - start() - end() private static void crunchifyFindStartEnd ( String crunchifyData ) { String crunchifyPattern = "Example" ; Pattern pat = Pattern . compile ( crunchifyPattern ) ; Matcher crunchifyMatcher = pat . matcher ( crunchifyData ) ; int totalCount = 0 ; while ( crunchifyMatcher . find ( ) ) { totalCount ++ ; // start(): Returns the start index of the previous match. // end(): Returns the offset after the last character matched. System . out . println ( "findStartEnd result = Iteration " + totalCount + " : " + crunchifyMatcher . start ( ) + " - " + crunchifyMatcher . end ( ) ) ; } } // crunchifyMatcher.lookingAt() private static void crunchifyLookingAt ( String crunchifyData ) { String crunchifyPattern = "This is Java" ; Pattern pat = Pattern . compile ( crunchifyPattern ) ; Matcher crunchifyMatcher = pat . matcher ( crunchifyData ) ; // lookingAt(): Attempts to match the input sequence, starting at the beginning of the region, against the pattern. boolean isLookingAt = crunchifyMatcher . lookingAt ( ) ; System . out . println ( "lookingAt() result 1: " + isLookingAt ) ; crunchifyPattern = " is Java" ; pat = Pattern . compile ( crunchifyPattern ) ; crunchifyMatcher = pat . matcher ( crunchifyData ) ; isLookingAt = crunchifyMatcher . lookingAt ( ) ; System . out . println ( "lookingAt() result 2: " + isLookingAt ) ; } // crunchifyMatcher.matches() public static void crunchifyMatches ( String crunchifyData ) { String crunchifyPattern = ".*https://.*" ; Pattern pat = Pattern . compile ( crunchifyPattern ) ; Matcher crunchifyMatcher = pat . matcher ( crunchifyData ) ; boolean isMatched = crunchifyMatcher . matches ( ) ; System . out . println ( "matches() result: " + isMatched ) ; } } |
نتيجة وحدة التحكم في الكسوف:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
This is sample data 'crunchifyData' : This is Java Regex Pattern Example . https : //crunchify.com. This is the list of all Matcher Example matches ( ) result : true lookingAt ( ) result 1 : true lookingAt ( ) result 2 : false findStartEnd result = Iteration 1 : 27 - 34 findStartEnd result = Iteration 2 : 90 - 97 group ( ) result : company group ( ) result : company group ( ) result : company multipleGroup ( ) result : is a Web multipleGroup ( ) result : is a Search multipleGroup ( ) result : is a social replaceAll ( ) - updated String : Crunchify is a Web best company . Google is a Search best company . Facebook is a social best company . |
اسمحوا لي أن أعرف إذا كان لديك أي سؤال قيد التشغيل فوق البرنامج.
