Regular expression
عبارت باقاعده (Regular Expression)
مقدمه
عبارت باقاعده (که اغلب به اختصار Regex یا Regexp گفته میشود) یک دنباله از کاراکترها است که یک الگوی جستجو را تعریف میکند. این الگوها برای یافتن و دستکاری متن استفاده میشوند. عبارتهای باقاعده در طیف گستردهای از برنامهها، از جمله ویرایشگرهای متن، زبانهای برنامهنویسی، و ابزارهای خط فرمان کاربرد دارند. در واقع، بسیاری از زبانهای برنامهنویسی مانند پایتون، جاوا، جاوااسکریپت، و پرل پشتیبانی داخلی از عبارتهای باقاعده دارند.
این مقاله یک راهنمای جامع برای مبتدیان در مورد عبارتهای باقاعده است. ما مفاهیم اساسی، سینتکس و کاربردهای عملی را پوشش خواهیم داد.
مفاهیم پایه
- **لیترالها:** سادهترین عبارت باقاعده، یک لیترال است. لیترال یک کاراکتر یا دنبالهای از کاراکترها است که دقیقاً با آن مطابقت دارد. به عنوان مثال، عبارت باقاعده `"hello"` فقط با رشته `"hello"` مطابقت دارد.
- **متاکاراکترها:** متاکاراکترها کاراکترهایی هستند که معنای خاصی در عبارتهای باقاعده دارند. آنها برای ایجاد الگوهای پیچیدهتر استفاده میشوند. برخی از متاکاراکترهای رایج عبارتند از:
* `.` (نقطه): با هر کاراکتری به جز خط جدید مطابقت دارد. * `^` (کلاه): با ابتدای رشته یا خط مطابقت دارد. * `$` (دلار): با انتهای رشته یا خط مطابقت دارد. * `*` (ستاره): با صفر یا چند تکرار از کاراکتر قبلی مطابقت دارد. * `+` (به علاوه): با یک یا چند تکرار از کاراکتر قبلی مطابقت دارد. * `?` (علامت سوال): با صفر یا یک تکرار از کاراکتر قبلی مطابقت دارد. * `[]` (براکتها): یک کلاس کاراکتری را تعریف میکند. * `()` (پرانتزها): یک گروه را تعریف میکند. * `|` (خط عمودی): عملگر OR است. * `\` (بک اسلش): برای فرار از متاکاراکترها استفاده میشود.
سینتکس عبارت باقاعده
کلاسهای کاراکتری
کلاسهای کاراکتری به شما امکان میدهند با مجموعهای از کاراکترها مطابقت داشته باشید.
- `[abc]`: با "a"، "b"، یا "c" مطابقت دارد.
- `[a-z]`: با هر حرف کوچک انگلیسی مطابقت دارد.
- `[A-Z]`: با هر حرف بزرگ انگلیسی مطابقت دارد.
- `[0-9]`: با هر رقم عددی مطابقت دارد.
- `[^abc]`: با هر کاراکتری به جز "a"، "b"، یا "c" مطابقت دارد.
کمیکنندهها (Quantifiers)
کمیکنندهها مشخص میکنند که یک کاراکتر یا گروه چند بار باید تکرار شود.
- `*`: صفر یا بیشتر تکرار.
- `+`: یک یا بیشتر تکرار.
- `?`: صفر یا یک تکرار.
- `{n}`: دقیقاً n تکرار.
- `{n,}`: n یا بیشتر تکرار.
- `{n,m}`: بین n و m تکرار.
گروهبندی و گرفتن (Grouping and Capturing)
پرانتزها `()` برای گروهبندی کاراکترها و گرفتن متن مطابقت یافته استفاده میشوند.
- `(abc)`: متن "abc" را گروهبندی میکند.
- `((abc)+)`: متن "abc" را گروهبندی میکند و یک یا چند تکرار از آن را میگیرد.
لنگرها (Anchors)
لنگرها برای مشخص کردن موقعیت مطابقت در رشته استفاده میشوند.
- `^`: با ابتدای رشته مطابقت دارد.
- `$`: با انتهای رشته مطابقت دارد.
- `\b`: با مرز کلمه مطابقت دارد.
- `\B`: با غیرمرز کلمه مطابقت دارد.
پرچمها (Flags)
پرچمها برای تغییر رفتار عبارت باقاعده استفاده میشوند.
- `i`: بیتفاوت به بزرگی و کوچکی حروف (case-insensitive).
- `g`: جستجوی سراسری (global search).
- `m`: چند خطی (multiline).
مثالهای عملی
- **اعتبارسنجی آدرس ایمیل:** `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`
- **یافتن تمام کلمات با طول حداقل 5 حرف:** `\b\w{5,}\b`
- **استخراج تاریخ از یک رشته:** `\d{4}-\d{2}-\d{2}`
- **جایگزینی تمام اعداد با "X":** با استفاده از عبارت باقاعده `\d` و تابع جایگزینی در زبان برنامهنویسی.
کاربردهای عبارت باقاعده
- **اعتبارسنجی دادهها:** اطمینان از اینکه دادههای ورودی با فرمت مورد انتظار مطابقت دارند.
- **جستجو و جایگزینی متن:** یافتن و تغییر متن در یک فایل یا رشته.
- **استخراج اطلاعات:** استخراج اطلاعات خاص از یک متن بزرگ.
- **تجزیه متن:** تجزیه متن به اجزای کوچکتر.
- **پردازش زبان طبیعی (NLP):** در وظایفی مانند تشخیص موجودیت نامدار و برچسبگذاری اجزای گفتار.
ابزارهای تست عبارت باقاعده
تست عبارتهای باقاعده قبل از استفاده از آنها در کد بسیار مهم است. چندین ابزار آنلاین و آفلاین برای این منظور وجود دارد:
- Regex101: یک ابزار آنلاین محبوب با برجستهسازی سینتکس و توضیح الگو.
- Regexr: یک ابزار آنلاین دیگر با یک رابط کاربری ساده و قابلیت اشتراکگذاری الگوها.
- RegEx Tester: یک ابزار دسکتاپ برای تست عبارتهای باقاعده.
عبارت باقاعده و تحلیل تکنیکال
در تحلیل تکنیکال بازارهای مالی، عبارتهای باقاعده میتوانند برای شناسایی الگوهای نموداری در دادههای تاریخی قیمت استفاده شوند. برای مثال، میتوان از آنها برای یافتن الگوهای شمعی خاص یا شناسایی نقاط شکست در روند قیمت استفاده کرد. همچنین، میتوان از آنها برای فیلتر کردن دادههای حجم معاملات و شناسایی ناهنجاریها استفاده کرد.
- **شناسایی الگوهای کندل استیک:** استفاده از regex برای یافتن الگوهای خاصی مانند Doji، Hammer، یا Engulfing.
- **فیلتر کردن دادههای حجم:** یافتن روزهایی با حجم معاملات غیرعادی بالا یا پایین نسبت به میانگین.
- **شناسایی نقاط شکست:** جستجوی الگوهایی که نشان دهنده شکست یک سطح مقاومت یا حمایت هستند.
عبارت باقاعده و تحلیل حجم معاملات
تحلیل حجم معاملات (Volume Analysis) یک استراتژی کلیدی در بازارهای مالی است. عبارتهای باقاعده میتوانند برای تجزیه و تحلیل دادههای حجم معاملات و شناسایی الگوهای مهم استفاده شوند.
- **تشخیص واگرایی حجم:** یافتن مواردی که حجم معاملات با جهت قیمت همخوانی ندارد.
- **شناسایی انباشت یا توزیع:** بررسی الگوهای حجم که نشان دهنده انباشت (Accumulation) یا توزیع (Distribution) سهام هستند.
- **فیلتر کردن معاملات با حجم بالا:** تمرکز بر معاملاتی که حجم بالایی دارند، که میتواند نشان دهنده علاقه سازمانی باشد.
- **شناسایی کلبهای حجمی:** جستجو برای الگوهایی که نشان دهنده افزایش ناگهانی حجم معاملات هستند.
استراتژیهای مرتبط
- میانگین متحرک (Moving Average): برای هموار کردن دادههای قیمت و شناسایی روندها.
- اندیکاتور RSI (Relative Strength Index): برای اندازهگیری سرعت و تغییرات قیمت.
- اندیکاتور MACD (Moving Average Convergence Divergence): برای شناسایی تغییرات در روند و قدرت.
- باندهای بولینگر (Bollinger Bands): برای اندازهگیری نوسانات و شناسایی سطوح بیش خرید و بیش فروش.
- فیبوناچی (Fibonacci): برای شناسایی سطوح حمایت و مقاومت احتمالی.
تکنیکهای پیشرفته
- **نگاه به عقب (Lookbehind):** مطابقت با کاراکترهایی که قبل از الگو وجود دارند.
- **نگاه به جلو (Lookahead):** مطابقت با کاراکترهایی که بعد از الگو وجود دارند.
- **گروههای نامگذاری شده (Named Groups):** دادن نام به گروهها برای دسترسی آسانتر به متن مطابقت یافته.
- **عبارتهای باقاعده بازگشتی (Recursive Regular Expressions):** استفاده از عبارتهای باقاعده برای مطابقت با الگوهای بازگشتی.
منابع بیشتر
- ویکیپدیا: Regular expression: یک مرجع جامع در مورد عبارتهای باقاعده.
- Regular-Expressions.info: یک وبسایت آموزشی با مثالهای متعدد.
- RegexOne: یک آموزش تعاملی برای یادگیری عبارتهای باقاعده.
نتیجهگیری
عبارتهای باقاعده ابزاری قدرتمند برای کار با متن هستند. با یادگیری مفاهیم اساسی و سینتکس، میتوانید از آنها برای حل طیف گستردهای از مشکلات استفاده کنید. تمرین و آزمایش با الگوهای مختلف کلید تسلط بر عبارتهای باقاعده است. با استفاده از ابزارهای تست موجود و منابع آموزشی، میتوانید به سرعت یک متخصص در این زمینه شوید.
شروع معاملات الآن
ثبتنام در IQ Option (حداقل واریز $10) باز کردن حساب در Pocket Option (حداقل واریز $5)
به جامعه ما بپیوندید
در کانال تلگرام ما عضو شوید @strategybin و دسترسی پیدا کنید به: ✓ سیگنالهای معاملاتی روزانه ✓ تحلیلهای استراتژیک انحصاری ✓ هشدارهای مربوط به روند بازار ✓ مواد آموزشی برای مبتدیان