دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۱۴
  • مهر

جلسه ۱۵ : عبارات منظم در جاوا

  • دسته‌بندی‌ها :
جلسه ۱۵ : عبارات منظم در جاوا
    • جزئیات
    • نوع محتواآموزش تصویری

      مقدمه

      با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرنو کاربرانی که دوره کامل آموزش برنامه نویسی جاوا را دنبال می کنند. یک عبارت منظم یک دنباله خاصی از کاراکترهایی است که به شما کمک می کند تا رشته ها یا مجموعه های رشته ای را با هم ترکیب کنید یا یک دستورالعمل خاص را که از یک الگوی خاص پیروی می کند را پیدا کنید. آنها می توانند برای جستجو، ویرایش و یا دستکاری متن و داده ها مورد استفاده قرار گیرند. جاوا بسته ی java.util.regex را برای تطابق الگو با عبارات منظم فراهم می کند. عبارات منظم جاوا بسیار شبیه به زبان برنامه نویسی پرل بوده و یادگیری آن نیز بسیار آسان است. برای آشنایی بیشتر با مباحث فوق در ادامه ی آموزش آشنایی با عبارات منظم در جاوا و ساختار کد عبارات منظم با ما همراه باشید.

      آشنایی با عبارات منظم در جاوا

      در ادامه ی آموزش آشنایی با عبارات منظم در جاوا ما شما را با انواع عبارات منظم در جاوا و متدهای آن آشنا خواهیم کرد.

      بسته java.util.regex در جاوا، عمدتا از سه کلاس زیر تشکیل شده است:

      • Pattern Class:

      یک شیء Pattern یک نمایش کامپایل شده از یک عبارت منظم است، که ساختارهای عمومی را ارائه نمی کند.

      برای ایجاد شیء Pattern ابتدا باید یکی از متدهای عمومی ()compile را فراخوانی کنید.سپس یک شیء Pattern در اختیار دارید.

      • Matcher Class:

      یک شی Matcher در واقع موتوری برای تفسیر الگوریتم می باشد.

      برای ایجاد یک شیء Matcher نیز باید متد () matcher را فراخوانی کنید تا یک شیء Matcher را برگرداند.

      • PatternSyntaxException:

      یک شیء PatternSyntaxException یک استثناء بدون کنترل است که یک خطای نحوی در یک الگوی بیان منظم را نشان می دهد.

      گروه بندی

      گروه بندی یکی از راه حل های مفید برای قرار دادن کاراکترهای چندگانه در یک واحد یکتا می باشد.

      این کار به راحتی و با قرار دادن کاراکترها در داخل یک پرانتز “()” انجام می شود.

      برای مثال عبارت منظم (dog) از کاراکترهای d” “o” و “g” تشکیل شده است.

      گروه بندی های چندگانه در پرانتزهای تودرتو به ترتیب از چپ به راست گروه ها تفکیک می شوند.

      برای مثال عبارت منظم ((A)(B(C))) شامل گروه های زیر می باشد:

      • ((A)(B(C)))
      • (A)
      • (B(C))
      • (C)

      برای پیدا کردن چند گروه در عبارت، متد groupCount را در یک object matcher را فراخوانی کنید.

      متد groupCount int تعداد گروه بندی های موجود در matcher را نشان می دهد.

      همچنین گروه خاصی به نام group 0 کل عبارت را نشان می دهد که این گروه در گزارشات گروه groupCount نیست.

      مثال:

      مثال زیر نشان می دهد که چگونه یک رشته رقمی از رشته الفبایی داده شده را پیدا کنید:

      مثال : 

      اجرای کد فوق در جاوا نتیجه ی زیر را نمایش خواهد داد:

      مثال : 

      ساختار کد عبارات منظم

      جدول زیر شامل لیست تمام عبارات منظم در جاوا می باشد:

      عبارت منظمکاربرد
      ^آغاز خط را مطابقت می دهد.
      $پایاین خط را مطابقت می دهد.
      .هر کاراکتری را به جز خط جدید وارد می کند. با استفاده از گزینه m امکان آن را به خط جدیدی هم می دهد.
      [...]کاراکترهای موجود در براکت ها مطابقت می دهد.
      [^...]کاراکترهایی که در براکت ها نیست را مطابقت می دهد.
      \Aشروع تمام رشته.
      \zپایان تمام رشته.
      \Zپایان تمام رشته، به جز محدود کننده خطی مجاز.
      re*مطابقت ۰ یا کاراکترهای قبلی عبارت
      re+مطابقت ۱ یا کاراکترهای قبلی عبارت
      re?مطابقت ۱ یا ۱
      re{ n} n تعداد عبارت منظم قبلی را مطابقت می دهد.
      re{ n,}مطابقت n تعداد عبارات منظم قبلی یا بیشتر.
      re{ n, m}مطابقت حداقل n و حداکثر m عبارت منظم
      a| bمطابقت یک یا دو
      (re)عبارات منظم گروه ها و متن متناظر آن را برمی گرداند.
      (?: re)عبارات منظم گروهی بدون یادآوری متن متناسب.
      (?> re)الگوی مستقل را بدون رد شدن از انطباق، مطابقت می دهد.
      \wکاراکتر کلمه را مطابقت می دهد.
      \Wکاراکترهای غیرمجاز را مطابقت می دهد.
      \sفضای سفید را مطابقت می دهد.
      \Sفضاهای غیر سفید را مطابقت می دهد.
      \dرقم های معادل با [۰-۹] را ارزیابی می کند .
      \Dعبارات غیر رقمی را مطابقت می دهد.
      \Aشروع یک رشته را مطابقت می دهد.
      \Zپایان رشته را مطابقت می دهد. اگر یک خط جدید وجود داشته باشد، درست قبل از خط جدید را مطابقت می دهد.
      \zپایان یک رشته را مطابقت می دهد.
      \Gآخرین نقطه ی مطابقت را انجام می دهد.
      \nبازگشت به مرجع برای گرفتن شماره گروه “n”.
      \bدر خارج از براکت ها، مرز کلمه ها را می سازد. و درون براکتها که قرار می گیرد، پشت سر هم (۰x08) برمی گردد.
      \Bمرزهای غیرمعمول را برآورده می کند.
      \n, \t, etc.مطابق خطوط جدید، بازده حمل، زبانه ها و غیره
      \Q (نقل قول) تمام کاراکترها تا \ E.
      \Eپایان نقل قول با \ Q آغاز می شود.

      متدهای کلاس matcher

      در اینجا یک لیست از متدهای نمونه مفید است:

      متدهای Index

      متدهای Index مقادیر Index های مفید را نشان می دهند و دقیقا نشان می دهد که کدامیک از آنها در رشته ورودی یافت می شود.

      ردیفمتد و توضیحات آن
      ۱public int start()

      شاخص شروع بازی قبلی را بازمی گرداند.

      ۲public int start(int group)

      شروع index از زیر مجموعه ی گروه بندی عبارات منظم است.

      ۳public int end()

      بعد از آخرین کاراکتر مطابقت آفست را بر می گرداند.

      ۴public int end(int group)

      پایان index از زیر مجموعه ی گروه بندی عبارات منظم است..

      متدهای مطالعه

      متدهای مطالعه (Study methods) رشته ورودی را بررسی می کند و یک مقدار بولین را برمی گردانند. که نشان می دهد آیا الگو یافت می شود یا خیر.

      ردیفمتد و توضیحات آن
      ۱public boolean lookingAt()

      تلاش برای مطابقت با توالی ورودی، با شروع از آغاز الگوی pattern

      ۲public boolean find()

      تلاش برای پیدا کردن توالی ورودی

      ۳public boolean find(int start)

      تلاش برای پیدا کردن توالی ورودی،با شروع از آغاز الگوی pattern

      ۴public boolean matches()

      تلاش برای مطابقت کل منطقه الگو pattern.

      متدهای جایگزین

      متدهای تعویض متدهای مفیدی برای جایگزینی متن در یک رشته ورودی هستند:

      ردیفمتد و توضیحات آن
      ۱public Matcher appendReplacement(StringBuffer sb, String replacement)

      جایگزینی غیر ممکن را اجرا می کند.

      ۲public StringBuffer appendTail(StringBuffer sb)

      یک ترمینال اضافه و جایگزین را اجرا می کند.

      ۳public String replaceAll(String replacement)

      جایگزین تمام توالی ورودی که منطبق با الگوی رشته جایگزینی است.

      ۴public String replaceFirst(String replacement)

      اولین توالی رشته ی ورودی را جایگزین می کند.

      ۵public static String quoteReplacement(String s)

      یک رشته ی جایگزین را برای رشته ی String مشخص شده باز می گرداند.

      شروع و پایان متدها

      در زیر نمونه ای است که تعداد دفعاتی که کلمه “cat”  در رشته ورودی نمایش داده می شود را شمارش می کند:

      مثال : 

      نتیجه ی اجرای کد فوق بصورت زیر خواهد بود:

      مثال : 

      شما می توانید ببینید که مثال فوق از مرزهای کلمه استفاده می کند تا اطمینان حاصل شود که حروف “c” “a” “t” صرفا یک زیرشاخه در یک کلمه طولانی نیستند.

      همچنین اطلاعات مفیدی در مورد موقعیت حروف رشته دارد.

      مطابقت و متدهای دنباله

      مثال زیر بخوبی عملکرد مطابقت و متدهای دنباله را نشان می دهد:

      مثال : 

      نتیجه ی اجرای کد فوق در جاوا بصورت زیر خواهد بود:

      مثال : 

      متدهای replaceFirst (جایگزینی اولیه)  و replaceAll ( جایگزینی کامل)

      متدهای replaceFirst و replaceAll متنی را جایگزین می کنند که که با یک عبارت منظم مطابقت دارد.

      همانطور که نام آنها نشان می دهد، replaceFirst اولین رخداد را جایگزین می کند و replaceAll  همه رخدادها را جایگزین می کند.

      مثال زیر بخوبی عملکرد متدهای replaceFirst و replaceAll را نشان می دهد:

      مثال : 

      خروجی مثال فوق در جاوا بصورت زیر خواهد بود:

      مثال : 

      متدهای appendReplacement و appendTail

      کلاس Matcher همچنین متدهای appendReplacement و appendTail را برای جایگزینی متن ارائه می دهد.

      مثال زیر بخوبی عملکرد متدهای فوق را نشان می دهد:

      مثال : 

      خروجی کد فوق در جاوا بصورت زیر خواهد بود:

      مثال : 

      متدهای کلاس PatternSyntaxException

      کلاس PatternSyntaxException یک استثناء بدون کنترل است که یک خطای نحوی در یک عبارت منظم را نشان می دهد.

      کلاس PatternSyntaxException متد های زیر را ارائه می دهد، که به شما کمک می کند تا بدانید چه اتفاقی افتاده است:

      ردیفمتد و توضیحات آن
      ۱public String getDescription()

      توضیحات خطا را بازیابی می کند.

      ۲public int getIndex()

      نمایش خطا را بازیابی می کند.

      ۳public String getPattern()

      الگوی بیان منظم اشتباه را بازیابی می کند.

      ۴public String getMessage()

      یک رشته چند خطی حاوی توضیحات خطای نحوی و index آن، را برمی گرداند.

      کلام آخر

      عبارات منظم در جاوا در واقع دنباله خاصی از کاراکترهایی است که به شما کمک می کند تا رشته ها یا مجموعه های رشته ای را با هم ترکیب کنید یا یک دستورالعمل خاص را که از یک الگوی خاص پیروی می کند را پیدا کنید. از این رو یادگیری آن در توسعه انواع برنامه های جاوا مهم بوده و ما مباحث آموزش آشنایی با عبارات منظم در جاوا را به این موضوع اختصاص داده ایم.

      QR:  جلسه ۱۵ : عبارات منظم در جاوا
      به اشتراک بگذارید