عبارات با قاعده RegExp در ActionScript3 – قسمت دوم

پس از تعریف یک عبارت با قاعده برای بررسی الگوی آن بر روی یک رشته، از دستورات test و exec در کلاس RegExp استفاده می‌شود.
دستور test با بازگرداندن یک مقدار Boolean، تطبیق الگوی مورد نظر را بر روی رشته بررسی می‌نماید. در صورتی که رشته با الگو تطابق داشته باشد، مقدار خروجی true و در غیر این صورت false بازگردانده می‌شود. دستور exec علاوه بر آن زیر رشته تطبیق داده شده و مکان شروع آن در رشته اصلی را نیز باز می‌گرداند. به عبارتی خروجی دستور exec آرایه‌ای از زیر رشته تطبیق داده شده و مکان شروع آن در رشته اصلی می‌باشد.

مثال:

var R:RegExp = /abc/i;
trace(R.test("abcdef"));		// Output: True
trace(R.test("Test of ABC"));	// Output: True
trace(R.test("AbC"));		// Output: True

 

مثال:

var  R: RegExp = /abc/ ;
var  result: Array = R.exec("A Test of  abc chars") ;

trace (result.index) ;	// Output:    10
trace (result.input) ;	// Output:    A Test of  abc chars
trace (result) ;		// Output:    abc

 

پس از اجرای دستور فوق، آرایه خروجی دارای سه خصیصه جدید  index، input  و عنصر آرایه خواهد بود.

  • خصیصه index : مشخص کننده اندیس شروع زیر رشته پیدا شده در رشته اصلی.
  • خصیصه input  : مشخص کننده متن رشته اصلی.
  • عنصر آرایه : متن زیر رشته پیدا شده.

در صورتی که در عبارات با قاعده از گروه بندی استفاده نشده باشد، خروجی دستور exec همیشه یک آرایه تک عضوی شامل زیر رشته پیدا شده خواهد بود. ما در صورت استفاده از کاراکترهای گروه بندی، می‌توان خروجی دستور exec را به چند زیر رشته مختلف تقسیم نمود.

مثال:

var  R: RegExp = /(\d+)[a-z]+(\d+)/;
var  result : Array = R.exec("7abc123");

trace(result.length) ;   	// Output:  3
trace(result [0] );	// Output:  7abc123
trace(result [1] );	// Output:  7
trace(result [2] );	// Output:  123

 

برای اینکه عمل جستجوی الگو در تمام رشته ورودی ادامه پیدا کرده و زیر رشته‌های دیگری نیز پیدا شوند، می‌بایست دستور exec به تعداد دفعات مورد نیاز فراخوانی گردد. به این منظور و برای مشخص شدن تعداد دفعات مورد نیاز برای اجرای دستور exec، باید فراخوانی آن را تا زمانی که مقدار خروجی آن null شود ادامه داد

مثال: پیدا کردن تمام کلمات 3 حرفی در یک جمله:

var pattern:RegExp = /\b\w{3}\b/g;
var target:String = "This String has Two 3 letter Words.";
var result:Array;

while ((result = pattern.exec(target)) != null) {
	trace(result, result.index, pattern.lastIndex);
}

/*OUTPUT:
has 12  15
Two 16  19
*/

About محمد شمس

برنامه‌نویس، طراح انیمیشن و علاقمند به هوش مصنوعی

2 Comments

  1. خیلی مخلصیم مهندس
    این عبارات با قاعده در عین سادگی ظاهری خیلی کاربردی هستند در علم نرم افزار

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


7 × 9 =