Latest web development tutorials

التعبير العادية سكالا

سكالا التي كتبهاscala.util.matching أنواع الحزمة الطبقة التعبيرات العادية لدعم التعابير العادية.يوضح المثال التالي استخدام العادية كلمة بحث التعبيرسكالا:

import scala.util.matching.Regex

object Test {
   def main(args: Array[String]) {
      val pattern = "Scala".r
      val str = "Scala is Scalable and cool"
      
      println(pattern findFirstIn str)
   }
}

تنفيذ التعليمات البرمجية أعلاه، والناتج هو:

$ scalac Test.scala 
$ scala Test
Some(Scala)

أمثلة على استخدام أسلوب فئة سلسلة ص () لبناء كائن العبارة العادية.

ثم استخدم طريقة findFirstIn للعثور على المباراة الأولى.

اذا كنت بحاجة الى ان نرى جميع المباريات يمكن استخدام أساليب findAllIn.

يمكنك استخدام mkString () طريقة للاتصال التعبير العادي يطابق سلسلة، ويمكنك استخدام الأنبوب (|) لتعيين وسائط مختلفة:

import scala.util.matching.Regex

object Test {
   def main(args: Array[String]) {
      val pattern = new Regex("(S|s)cala")  // 首字母可以是大写 S 或小写 s
      val str = "Scala is scalable and cool"
      
      println((pattern findAllIn str).mkString(","))   // 使用逗号 , 连接返回结果
   }
}

تنفيذ التعليمات البرمجية أعلاه، والناتج هو:

$ scalac Test.scala 
$ scala Test
Scala,scala

إذا كنت بحاجة إلى استبدال الكلمات الرئيسية المحددة مطابقة النص، يمكنك استخدامreplaceFirstIn طريقة ()ليحل محل المباراة الأولى، استخدمreplaceAllIn ()طريقة استبدال جميع المباريات، والأمثلة على النحو التالي:

object Test {
   def main(args: Array[String]) {
      val pattern = "(S|s)cala".r
      val str = "Scala is scalable and cool"
      
      println(pattern replaceFirstIn(str, "Java"))
   }
}

تنفيذ التعليمات البرمجية أعلاه، والناتج هو:

$ scalac Test.scala 
$ scala Test
Java is scalable and cool

التعبير العادية

ورثت سكالا التعبير العادية قواعد النحو جافا، وجافا استخدام معظم قواعد اللغة بيرل.

الجدول التالي يعطينا بعض القواعد العادية التعبير المشتركة:

التعبير حكم مطابقة
^ تطابق تبدأ سلسلة الإدخال.
$ تطابق نهاية مدخلات موقف السلسلة.
. يطابق أي حرف واحد باستثناء "\ ص \ ن" هو.
[...] مجموعة الأحرف. مباريات تضمن أي حرف. على سبيل المثال، "[ABC]" مباريات "سهل" في "أ".
[^ ...] مجموعة الأحرف العكسي. مباريات أي حرف غير المدرجة. على سبيل المثال، "[^ اي بي سي]" مباريات "سهل" في "ص"، "ل"، "أنا"، "ن".
\\ و تطابق الموقف بداية سلسلة الإدخال (أي دعم متعدد الخطوط)
\\ Z نهاية السلسلة ($ ما شابه ذلك، ولكن لا يؤثر على خيارات العلاج لصفوف متعددة)
\\ Z نهاية السلسلة أو نهاية السطر (من العلاج على خيارات سطر متعددة)
إعادة * كرر الصفر أو أكثر من مرة
إعادة + وكرر واحدة أو أكثر من مرة
إعادة؟ كرر صفر أو واحد مرة
إعادة {ن} ن مرات متكررة
إعادة {ن،}
إعادة {ن، م} ن المتكررة إلى العصور م
و| ب مباراة أو ب
(إعادة) مباراة إعادة، والتقاط النص إلى مجموعة اسمه السيارات
(؟: إعادة) مباراة إعادة، لا التقاط النص مطابقة، ولا إلى هذه المجموعة المعينة رقم المجموعة
(؟> إعادة) subexpressions الجشع
\\ W رسائل مباراة أو أرقام أو أحرف تسطير أو
\\ W لا تتطابق مع أي الحروف والأرقام، سفلية، الحروف الصينية
\\ S يطابق أي بيضاء، أي ما يعادل [\ ر \ ن \ ص \ و]
\\ S لا تتطابق مع أي حرف مسافة بيضاء
\\ D أرقام مطابقة، على غرار [0-9]
\\ D يطابق أي أحرف غير رقمية
\\ G بداية البحث الحالي
\\ N السطر الجديد
\\ B عادة ما يكون موقف حدود الكلمة، ولكن إذا كنت تستخدم الطابع الطبقي تمثل مسافة للخلف
\\ B الموقع لا تتطابق مع بداية أو نهاية الكلمة
\\ T علامات التبويب
\\ س بدءاقتباس: \ س (أ + ب) * 3 \ E مباريات النص "(أ + ب) * 3 ".
\\ E انتهى: \ س (أ + ب) * 3 \ E مباريات النص "(أ + ب) * 3 ".

أمثلة من التعابير العادية

أمثلة وصف
. يطابق أي حرف واحد باستثناء "\ ص \ ن" هو.
[RR] uby مباراة "روبي" أو "روبي"
فرك [أيها] مباراة "روبي" أو "الساذج"
[AEIOU] تطابق الحروف الصغيرة: AEIOU
[0-9] مباريات أي رقم، على غرار [0123456789]
[من الألف إلى الياء] يطابق أي حرف ASCII صغيرة
[AZ] يطابق أي الأحرف الكبيرة ASCII
[A-ي0-9] أرقام مطابقة، الأحرف الكبيرة والصغيرة
[^ AEIOU] بالإضافة إلى مطابقة الأحرف الأخرى AEIOU
[^ 0-9] يطابق أي حرف آخر من الأرقام
\\ D مطابقة أرقام، مثل هذا: [0-9]
\\ D أرقام غير مطابقة، مثل هذا: [^ 0-9]
\\ S المساحات مباراة، على غرار: [\ ر \ ص \ ن \ و]
\\ S مطابقة غير الفضائية، على غرار: [^ \ ر \ ص \ ن \ و]
\\ W رسائل مباراة، أرقام، يؤكد، على غرار: [A-زا-z0-9_]
\\ W رسائل غير مطابقة، والأرقام، يؤكد، على غرار: [^ A-زا-z0-9_]
روبي؟ مباراة "فرك" أو "روبي": ذ اختياري
روبي * مباراة "فرك" بالاضافة الى صفر أو أكثر من ذ.
روبي + مباراة "فرك" زائد واحد أو أكثر من ذ.
\\ D {3} بالضبط يناسبها من ثلاثة أرقام.
\\ D {3} تطابق ثلاثة أو أكثر من أرقام.
\\ D {3،5} تطابق ثلاثة أو أربعة أو خمسة أرقام.
\\ D \\ د + لا التجمع: + تكرار \ د
(\\ D \\ د) + / مجموعة + تكرار \ D \ d ل
([RR] uby (،؟)) + مباراة "روبي"، "روبي، روبي، روبي"، الخ.

لاحظ أن الجدول أعلاه لكل حرف يستخدم اثنين مائل. هذا هو لأنه في جاوة وسكالا مائل في السلسلة حرف الهروب. حتى إذا كنت ترغب في الانتاج. \.، تحتاج إلى الكتابة في السلسلة. \\. للحصول على مائل. راجع الأمثلة التالية:

import scala.util.matching.Regex

object Test {
   def main(args: Array[String]) {
      val pattern = new Regex("abl[ae]\\d+")
      val str = "ablaw is able1 and cool"
      
      println((pattern findAllIn str).mkString(","))
   }
}

تنفيذ التعليمات البرمجية أعلاه، والناتج هو:

$ scalac Test.scala 
$ scala Test
able1