دو ابزار قدرتمند برای تهیه عبارات با قاعده (Regex)

۱۳۸۸/۰۴/۱۵ ۱۹:۵۴ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۸/۰۴/۱۵ دسته بندی : ، ، 3

قبل از هر چیز عذر خواهی من رو به خاطر تاخیر یک ماهه بپذیرید. علت آن هم همزمانی چندید رویداد بود که مانع از نوشتن می شد. سعی خواهم کرد در آینده تاخیری پیش نیاید.

عبارات با قاعده (Regular expressions) ابزار بسیار قدرتمندی در پردازش متون فرمت دار هستند.
از آنجایی که برخی عبارات می توانند بسیار پیچیده باشند وجود ابزاری برای ساده کردن کار بسیار لازم به نظر می رسه.
عبارات قاعده می توانند خیلی ساده مانند \w+ برای انتخاب کلمات باشند و یا خیلی پیچیده مانند (?><[A-Z][A-Z0-9]+)(?>\s+[^>\s]+)*?\s*(?>background\s*=(?!\\)\s*)(?>(['"])?)(?(?(1)(?(?<=")[^"]+|[^']+)|[^ >]+))(?(1)\1|) برای انتخاب ویژگی background در تگهای Html باشند.

در اینجا قصد دارم دو ابزار رو معرفی کنم که هر کدام به نوبه خود قدرتمند هستند ولی استفاده همزمان از آنها باعث افزایش سرعت کار شما خواهد شد.

این ابزار 40 دلاری که با دلفی نوشته شده قابلیتهای فوق العاده ای رو در اختیار قرار میده. با داشتن یک محیط ویرایشگر قوی کد نویسی regex رو برایتون آسون می کنه. این محیط ویرایشگر با رنگی کردن کد ها درک آنها رو خیلی آسانتر کرده و همچنین با این کار می توان کد ها را خیلی راحت تر رفع ایراد کرد. همچنین با وجود این ویژگی می توانید کدهایی که قبلا نوشته اید رو به این ابزار انتقال داده و در آنجا مجددا بررسی کنید.

محیط ویرایشگر و آنالیزر


یک ویژگی مهم دیگر این نرم افزار پیاده سازی موتور پردازشگرهای زبانها مختلف برنامه نویسی است. به علت اینکه ممکن است برخی ویزگیهای regex در موتور های مختلف کمی متفاوت پیاده سازی شده باشند و یا جذف شده باشند، این ویژگی کمک خواهد کرد که کدهای نوشته شده با آن موتور همخوانی داشته باشد. تعدادی از موتور های پردازش regex  پیاده سازی شده شامل javascript, perl .NET , java, XPath و غیره است.

استفاده از موتور javascript


ویژگی قابل توجه دیگر اشکال زدای حرفه ای این ابزار است. با این اشکال زدا می توان مراحل اجرای یک دستور regex را دنبال کرد و محل وقوع اشتباه را دقیقا شناسایی کرد.

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

بخش تست نیز یک قسمت مهم هست که در آنجا عبارات بر روی نمونه مثالی که داده اید آزمایش می شود و نتایج بیدرنک در همانجا با رنگی کردن متون نمایش داده می شوند. این شیوه از رنگی شدن متون فهم عملکرد عبارات را خیلی ساده تر می کند.

تست و اشکال زدایی

خلاصه ای از ویژگی ها این ابزار:

Regex Tree and Regex Building Blocks
Regex Tester and Debugger
Instant Code Snippets
RegexBuddy Library
Search and Replace through Files and Folders
Integration with Your Favorite Software
و Toturial


این ابزار که با با دات نت نوشته شده است فقط امکان استفاده از موتور پردازشی دات نت را دارد و به همین خاطر از رقیب خود کمی عقب می ماند.

با این حال یکی از ویژگی های بسیار عالی این ابزار محیط طراحی یا Design این نرم افزار است که تقریبا تمام ویژگیهای regex را به صورت گزینه هایی در اختیار قرار می دهد، به طوری که کمتر به استفاده از صفحه کلید نیاز خواهید داشت.

محیط Expresso

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

محیط آنالیز و ویرایش هر قسمت

همانطور که در این تصویر مشاهده می کنید امکان تست عبارات وجود دارد. این امکان که به جزئیاتی همانند گروههای هر نتیجه دسترسی پیدا کنید از طریق لیست درختی بخش Search Results قابل دسترسی است.

مورد دیگر امکان Timing Test از منوی Tools هست که این امکان را فراهم می کند تا سرعت اجرای عبارات را در اجرای مکرر بسنجید.

و سر انجام مجموعه عبارت از قبل آماده که می توانید لیست آنها را در بخش Expression Leibrary مشاهده کنید.

ویژگیهای این ابزار به صورت لیست وار:

Test expressions against real or sample input data
Display all matches in a tree structure, showing captured groups, and all captures within a group
Build replacement strings and test the match and replace functionality
Highlight matched text in the input data
Test automatically for syntax errors
Generate Visual Basic, C#, or C++ code
Dramatically enhanced Analyzer
Rich new Builder and editing features


  • این دو ابزار با هم


این دو نرم افزار همانطور که ذکر شد دارای ویژگیهایی قابل ملاحظه ای هستند. اما با این حال شاید در برخی موارد کاستی هایی داشته باشند. به همین خاطر چرا از هردوی آنها استفاده نکنیم؟ این راه کار من هست:

ابزار RegexBuddy یک عیب اذیت کننده دارد و آن محیط کد نویسی یا تولید عبارات با قاعده است. یک منو که فقط با اسامی امکان دسترسی سریع به الگوها را می دهد.

ابزار Expresso عیبی که دارد این است که بر روی تست های عبارات کنترل کافی ندارد. برای مثال در صورتی که در تستها نتیجه ای از قلم افتاده باشد مشخص نخواهد شد. همچنین قدرت اشکال زدایی و اجرای قدم به قدم عبارات را نیز ندارد.

با توجه به این معایب و وِیژگیهایی که برای هر یک ذکر کردم می توان از این دو ابزار به این صورت در کنار هم استفاده کرد.

در صورتی که عبارات regex از قبل دارید و فقط می خواهید کارایی آن را آزمایش کرده و یا تغییرات اندکی به آن بدهید بی درنگ از RegexBuddy استفاده کنید که امکان قابل توجهی برایتان در اختیار دارد.

در صورتی که در حال نوشتن عبارات جدید هستید از ابزار expresso و محیط Design آن استفاده کنید. همچنین از ویژگیهای آنالیزر آن هم استفاده کرده و می توانید تست های خوبی روی عبارات انجام دهید. و سرانجام برای تست نهایی و تایید صحت عملکرد و بهینه سازی از ابزار RegexBuddy استفاده کنید.

در حالت کلی برای تست سریع عباراتی که در اینترنت مشاهده می کنید و یا به ذهنتان خطور می کند به سلیقه خود یکی را انتخاب کنید.

موفق باشید

 

3 بازخورد برای “دو ابزار قدرتمند برای تهیه عبارات با قاعده (Regex)”

  1. ممنون بابت معرفی این دو ابزار و مطلب کاملت. من از http://www.radsoftware.com.au/regexdesigner استفاده کردم، رایگان هم هست.
    --------------
    بسیار عالی، البته ابزارهای رایگان خوبی در این زمینه وجود دارد که نیاز به معرفی در وقت دیگیری دارد.

    پاسخحذف
  2. salam
    zemne tashakkor az matalebe karbordi ke matrah mikonin . soali ke daram shaiad rabti be in mozoo nadashte basham vali jaie digeii nabood . mikhastam lotf konin oon seriali ke baraie Team Foundation Server baraie aghaie Hajloo ersal kardin baraie manam lotf konin ersal konin .
    ba tashakkor

    ----------------------
    ارسال شد

    پاسخحذف
  3. اگر ممکنه در مورد Regex بیشتر توضیح بدهید :]

    پاسخحذف