-
التعبير العادي:
تسمح التعبيرات العادية للمستخدمين بإنشاء نمط مطابق باستخدام سلسلة من الأحرف الخاصة، ثم مقارنة نمط المطابقة مع الكائنات المستهدفة مثل ملفات البيانات وإدخال البرنامج وإدخال النموذج على صفحات الويب اعتمادًا على ما إذا كان كائن المقارنة يحتوي على المطابقة نمط، تنفيذ البرنامج المقابل. لقد نال الانتظام حب المبرمجين بسبب بساطته وعمليته وسرعته. 
بعض الأفكار حول كتابة regex:
1. أولا، تحديد القواعد. ما نوع السلسلة التي تحتاج إلى مطابقتها، وما هي الأجزاء التي تتكون منها، وما هي الخصائص التي تتمتع بها.
2. اقترح أصغر وحدة. في بعض الأحيان، يتم تكرار بعض قواعد المطابقة، يمكننا محاولة العثور على نقاط مشتركة وتخطيطها في قاعدة.
3. اكتب القواعد المنتظمة واحدة تلو الأخرى حسب قواعدها وأصغر الوحدات.
4. قم بتوحيد مجموعة انتظامات الوحدات هذه لتكوين الانتظام الكامل الذي تريده.
نحن هنا بحاجة إلى فهم بعض العلامات الأساسية والاستخدام. أي قواعد تتكون من علامات أساسية. الترميز العادي أيضًا بسيط جدًا، لذا قد تفهمه جيدًا.
العلامات شائعة الاستخدام في التعبيرات العادية
1 العلامات الشائعة الاستخدام في التعبيرات العادية 2 ^ |. بداية السطر أو السلسلة 3 $ |. أحرف أخرى غير الأسطر الجديدة 5 w | أحرف غير كلمة 7 d |. أرقام (تعادل [0-9]) 8 D |. أحرف غير بيضاء 9 10 A |. نهاية السلسلة أو حرف السطر الجديد 12 z | نهاية السلسلة 13 14 s |. حرف غير فارغ 16 17 b |. حد الكلمة (خارج []) 18 B |. مسافة للخلف 19 b |. ] |. أي حرف في المجموعة، مع واصلة في المنتصف، يمثل نطاقًا، مثل: [az]21؟. 0 أو 1 التعبير السابق 22 | 25 * |. صفر أو أكثر من التعبيرات السابقة 26 *؟ صفر أو أكثر من التعبيرات السابقة (غير جشع) 29 {م، ن} |. mn التعبيرات السابقة 30 {m,n}؟
المثال الأساسي:
1 # تطابق السلسلة بأكملها 2 puts /ruby/ =~ "ruby" # 0 3 put /ruby/ =~ "Ruby" # nil 4 5 # تطابق بداية ونهاية السطر أو السلسلة 6 str = "abcdef" 7 يضع str 8 يضع /^abc/ =~ str # 0 9 يضع /def$/ =~ str # 310 11 str = "abcndefn" 12 يضع /^abc/ =~ str # 013 يضع /def$/ =~ str # 414 يضع /abc/ =~ str # 015 يضع /def/ =~ str # 416 17 # تطابق بداية ونهاية السلسلة نفسها 18 str = "abcndefn" 19 يضع /Aabc/ =~ str # 020 يضع /defZ/ =~ str # 421 يضع /defz/ =~ str # nil22 23 # مطابقة أحرف الكلمة 24 يضع "مطابقة أحرف الكلمة" 25 نمط = /w/26 يضع النمط = ~ "abc " # 027 يضع النمط =~ "." # nil28 29 # مطابقة عدد صحيح 30 # d رقم 31 # D غير رقم 32 يضع "رقم المطابقة" 33 يضع /d/ =~ "122" #034 يضع /D / =~ "122" #nil35 يضع /D/ =~ "abc" #036 37 38 #Border 39 str = "هذا صديقك!"40 يضع str41 يضع str.gsub(/b/ ,"|" ) # |هذا |. |صديقك|.|42 يضع str.gsub(/B/,"-") # هذا صديقك!
مثيل المؤهل
1 يضع "مؤهل" 2 يضع "مؤهل: *" 3 يضع /(abc)*/ =~ "a" # 0 4 يضع /(abc)*/ =~ "abc" # 0 5 6 7 يضع "مؤهل: +" 8 يضع /(abc)+/ =~ "a" # nil 9 يضع /(abc)+/ =~ "abc" # 010 11 يضع "المؤهل: ؟" 12 يضع /(abc)?/ =~ " c" # 013 يضع /(abc)?/ =~ "abc" # 014 15 16 يضع "Qualifier: {n}"17 يضع /(abc){2}/ =~ "abc" # nil18 يضع /(abc) {2}/ =~ "abcabc" # 019 20 يضع "المؤهل: {n,}"21 يضع /(abc){2,}/ =~ "abc" # nil22 يضع /(abc){ 2,}/ = ~ "abcabc" # 023 24 يضع "المؤهل: {n,m}"25 يضع /(abc){2,3}/ =~ "abc" # nil26 يضع /(abc){2, 3}/ =~ " abcabcabc" # 027 28 يضع "Qualifier: *؟" 29 يضع /(abc)*?/ =~ "a" # 030 يضع /(abc)*?/ =~ "abcabc" # 031 32 يضع "Qualifier: +? " 33 يضع /(abc)+?/ =~ "a" # nil34 يضع /(abc)+?/ =~ "abcabc" # 035 36 يضع "Qualifier: ??؟"37 يضع /(abc)??/ = ~ "a" # 038 يضع /(abc)??/ =~ "abcabc" # 039 40 41 #match، {1} {3}42 # {3} يمكن أن يتطابق، إذن {1} سوف يتطابق بالتأكيد، لكن العكس غير صحيح 43 # نطاق المطابقة: {1} > {3}
أمثلة شائعة:
1 يضع "مثال" 2 # تطابق أرقام الهواتف: 3 # بشكل عام، أرقام الهواتف الصينية مكونة من 7 إلى 8 أرقام، ورموز المناطق عبارة عن أعداد صحيحة مكونة من 3 إلى 4 أرقام، والرقم الأول من رمز المنطقة هو 0، والفاصل "-" هو يستخدم في المنتصف 4 # انتبه إلى القيود الأولى والأخيرة الرمز 5 النمط = /^0d{2,3}-d{7,8}$/ 6 يضع النمط =~ "010-82809999" # 0 7 يضع النمط =~ "00010-82809999" # nil 8 9 # تطابق رقم الهاتف المحمول 10 # بدءًا من 1، الرقم الثاني هو 3، 5، 8، 11 رقمًا 11 Pattern = /^1[3,5,8] d{9}$/12 يضع النمط =~ "15810990001" #013 14 #رقم بطاقة الهوية 15 نمط = /d{18}|d{15}/16 17 #Match IP18 #أربع مجموعات من الأعداد الصحيحة ليست أكبر من 255، مفصولة بـ '.' 19 يضع "IP" 20 num = /^d|[01]?d{1,2}|2[0-4]d|25[0-5]/21 = /^(#{num}.){3} #{num}$/22 #الكل: النمط = /^(^d|[01]?d{1,2}|2[0- 4]d|25[0-5].) {3}^d|[01]?d{1,2}|2[0-4]d|25[0-5]$/ 23 يضع النمط =~ "127.0.0.1" # 024 يضع النمط =~ "254.255.255.255"25 26 # تطابق عنوان البريد الإلكتروني 27 Pattern = /^w+@w+.w+$/ # هذا لا يحتوي على '-' 28 نمط = /^[w-]+@[w- ]+.[w-]+$/29 يضع النمط =~ " [email protected] " #030 31 # مطابقة url32 # http:// نمط www.google.cn33 = /(http|https|ftp): (//|\\)((w)+[.]){1,}(net|com|cn|org| cc|tv|[0-9]{1,3})( ((/[~]*|\[~]*)34 (w)+)|[.](w)+ )*((([?](w)+){ 1}[=]*))*((w)+){1}([&](w)+[=]( w)+)*)*/35 36 يضع النمط =~ " http://www.google.cn?uid=123 " #0
آخر
معنى الجشع
1 يضع "الجشع" 2 # الجشع يعني مطابقة أطول سلسلة ممكنة 3 # '.' المعنى: أحرف أخرى غير الأسطر الجديدة 4 str = "حيث يلتقي البحر بالأرض البيضاء" 5 يضع str 6 match = /.* the/.match(str) 7 يضع match[0] # حيث يلتقي البحر بـ * جشع. إذا كنت لا تريد أن تكون جشعًا، أضف + '?' 8 #*?non-greedy 9 match = /.*?the/.match(str)10 يضع match[0] # حيث the11 12 str.insert( 0,"Hello n")13 match = /.*?the/.match(str)14 يضع المطابقة[0] #حيث
المعاينة الإيجابية والسلبية
1 # معاينة إيجابية وسلبية 2 يضع "معاينة إيجابية وسلبية" 3 s1 = "قاموس العالم الجديد" 4 s2 = "سيمفونية العالم الجديد" 5 s3 = "النظام العالمي الجديد" 6 7 reg = /عالم جديد (?=قاموس| Symphony)/ 8 m1 = reg.match(s1) 9 يضع m1.to_a[0] # "عالم جديد"10 m2 = reg.match(s2)11 يضع m2.to_a[0] # "عالم جديد"12 يضع reg .match(s3) # nil13 14 يضع "معاينة سلبية" 15 16 reg = /New World (؟!Symphony)/ # لا يوجد "Symphony" بعد "New World" 17 يضع reg.match(s1).to_a[0 ] # "عالم جديد"18 يضع reg.match(s2).to_a[0] # nil19 يضع reg.match(s3).to_a[0] # "عالم جديد"
-