آبجی
14th February 2010, 02:06 AM
یک نکته ی جالب در مورد RegEx، قابلیت ایجاد شرط برای اون هست.
شرط ها رو میشه با تکنیک های backreference و lookaround استفاده کرد.
به عنوان مثالی برای حالت backreference: (<[Aa]\s+[^>]+>\s*)?(?(1)\s*</[Aa]>)
عبارت (۱)? به عبارت محصور شده در اولین پرانتز مراجعه و مشخص می کنه در صورتی که تگ A با هر مخلفاتی پیدا شد، تگ <A/> برای اون معنا پیدا می کنه. به عبارت دیگه، تنها در صورتی وجود یک تگ پایانی بررسی میشه که تگ شروع A برای اون وجود داشته باشه.
این از IF ما! قسمت ELSE هم می تونه وجود داشته باشه.
مثال قبل با در نظر گرفتن ELSE:
(<[Aa]\s+[^>]+>\s*)?(?(1)\s*</[Aa]>|salam)
در صورتی که تگ A کاملی وجود داشت اون رو پیدا کن در غیر اینصورت به دنبال عبارت salam بگرد…
شرط ها رو میشه با تکنیک های backreference و lookaround استفاده کرد.
به عنوان مثالی برای حالت backreference: (<[Aa]\s+[^>]+>\s*)?(?(1)\s*</[Aa]>)
عبارت (۱)? به عبارت محصور شده در اولین پرانتز مراجعه و مشخص می کنه در صورتی که تگ A با هر مخلفاتی پیدا شد، تگ <A/> برای اون معنا پیدا می کنه. به عبارت دیگه، تنها در صورتی وجود یک تگ پایانی بررسی میشه که تگ شروع A برای اون وجود داشته باشه.
این از IF ما! قسمت ELSE هم می تونه وجود داشته باشه.
مثال قبل با در نظر گرفتن ELSE:
(<[Aa]\s+[^>]+>\s*)?(?(1)\s*</[Aa]>|salam)
در صورتی که تگ A کاملی وجود داشت اون رو پیدا کن در غیر اینصورت به دنبال عبارت salam بگرد…