درست است که رجکس (RegEx) تنها برای دیجیتال مارکترها نیست و خیلی جاها کاربرد دارد. اما من در دنیای دیجیتال مارکتینگ استفادههای زیادی از آن میکنم و احتمالا تعدادی از این موارد به کار شما هم خواهد آمد. خیلی وقتها در هنگام استفاده از گوگل آنالیتیکس، گوگل تگ منیجر، گوگل دیتا استودیو و ابزارهای دیجیتال مارکتینگی دیگر، نیاز دارید که برای هدف گرفتن یک سری المانهای خاص از رجکس استفاده کنید و همین موضوع باعث میشود دانستن رجکس به یک «باید» تبدیل شود. به نوعی میتوان گفت رجکس یک فیلتر است که روی دادهها اعمال میشود و در نهایت، دادهای را به شما نمایش میدهد که خودتان تعیین کردهاید. اما این تنها شروع کار است و خیلی چیزها لازم است دربارهی رجکس بدانیم.
رجکس را چطور باید تلفظ کرد؟
من فکر میکنم تلفظ درست این کلمه رِگِکس است؛ چرا که RegEx از دو کلمهی Regular Expression (عبارت باقاعده) برداشته شده است و از آنجایی که Regular را رگیولار تلفظ میکنیم، باید به RegEx هم بگوییم رگکس. اما در جامعه خیلی زیاد میشنوم که از رجکس به جای رگکس استفاده میکنند و اگر بگویی رگکس، احتمالا مورد تمسخر دیگران قرار خواهی گرفت! همین شده که سعی کردهام همرنگ جماعت شوم و به جای رگکس – که به نظر من درستتر است – از همان رجکس استفاده کنم.
چند دقیقهی قبل به صورت گذرا به معادل فارسی رجکس اشاره کردم. در فارسی از معادل «عبارت باقاعده» برای رجکس استفاده میکنند. ولی من این عبارت را اصلا دوست ندارم و ترجیح میدهم از رگکس، رجکس، ریجکس یا هر چیز دیگری که فارسی نشده باشد استفاده کنم. این عبارت را به همین شکل یاد بگیرید تا اگر جایی آن را زبان دیگران شنیدید، تعجب نکنید. البته احتمالا چند بار هم خودم از «عبارت باقاعده» استفاده کنم؛ شما آن موارد را نادیده بگیرید!
رجکس کجاها کاربرد دارد؟
من زیاد اهل برنامهنویسی نیستم و دقیقا نمیدانم که کجاها میتوان از عبارتهای رجکس در دنیای برنامهنویسی استفاده کرد. ولی به عنوان مثال میدانم که دولوپرهای پایتون و جاوا اسکریپت به دفعات از عبارتهای باقاعدهی رجکس استفاده میکنند.
از طرف دیگر میدانم که برای استفاده از این ابزار کاربردی در دنیای مارکتینگ دیجیتال، موارد استفادهی بیشماری وجود دارد. به عنوان مثال در مجموعه ابزارهای گوگل آنالیتیکس، گوگل تگ منیجر، گوگل دیتا استودیو و گوگل اپتیمایز همواره به استفاده از عبارتهای باقاعده رجکس نیاز دارید. این اواخر متوجه شدهام که در بیگکوئری (BigQuery) هم میتوان از رجکس استفاده کرد. اما بیایید خودمان را با این نامها درگیر نکنیم و با چند مثال کاربردی، موارد استفادهی رجکس در دنیای دیجیتال مارکتینگ را بررسی کنیم.
۱- کاربرد رجکس در گوگل آنالیتیکس (Google Analytics)
- برای ست کردن گلها (Goals)
- برای ساختن سگمنتها (Segments)
- برای ساخت Content Grouping و Channel Grouping
- برای استفاده از جستجوی پیشرفته (Advanced Search)
۲- کاربرد رجکس در گوگل تگ منیجر (Google Tag Manager)
- برای ساختن تریگرهای پیشرفته و ترکیب چند تریگر در یک تریگر
- برای استفاده از متغیر RegEx Table
۳- کاربرد رجکس در گوگل دیتا استودیو (Google Data Studio)
- برای ساختن فیلترهای که روی دادهها اعمال میشوند
- برای ساختن فیلدهای اندازهگیری شده (Calculated Fields)
۴- کاربرد رجکس در گوگل اپتیمایز (Google Optimize)
- برای تعیین هدف از آزمایش (Experiment Goals)
- برای مشخص کردن صفحههای هدف آزمایش
همین چندی پیش بود که در هنگام ساختن یک گوگل فرم، ناگهان دیدم که امکان استفاده از رجکس برای محدود کردن ورودیها وجود دارد. حتی در ابزارهای ایرانی هم میتوان رد و نشانی از استفاده رجکس پیدا کرد. به عنوان مثال در شبکهی تبلیغاتی یکتانت میتوانید اهداف مورد نظرتان را با استفاده از عبارتهای رجکس مشخص کنید و از یکتانت بخواهید که در ازای محقق شدن این اهداف، کمپینهای شما را مدیریت کند.
این موضوع کاربردهای زیادی دارد که هر چه در آن بیشتر پیش بروید، بیشتر با آنها آشنا خواهید شد.
اپراتورهای رجکس چه چیزهایی هستند؟
به اصلیترین بخش رجکس رسیدیم. در واقع الان در بخشی هستیم که تعیینکنندهی عبارتهای رجکسی هستند و با استفاده از آنها میتوان این عبارتهای باقاعده را ساخت. به کاراکترهایی که عبارتهای رجکسی را میسازند، اپراتور رجکس گفته میشود. رجکس چند اپراتور اصلی دارد که به اصول اولیه شکل میدهند. البته تعداد اپراتورهای رجکس به یکی و دو تا محدود نمیشود و برای کاربردهای مختلف، اپراتورهای رجکسی متفاوتی وجود دارد. اما همانطور که گفتم، میتوانید چند اپراتور سادهی رجکس را یاد بگیرید و با استفاده از آنها، کارهای عادیتان را راه بیندازید. بیایید اپراتورهای مبنایی رجکس را با هم مرور کنیم.
۱- کَرِت یا علامت توان – ^
این کارکتر برای نشان دادن شروع عبارت باقاعده استفاده میشود. اگر بخواهیم فیلتر رجکس را طوری محدود کنیم که قبل از آن عبارت دیگر قرار نگرفته باشد، باید از کرت استفاده کنیم. این مثال را ببینید:
RegEx Example: ^ant
antonym => pass
antalya => pass
merchant => not pass
۲- دالر ساین یا علامت دلار – $
این کاراکتر برای نشان دادن پایان عبارت باقاعده استفاده میشود. با استفاده از این کاراکتر مشخص میکنیم که عبارت باقاعده حتما باید با کاراکتر قبل از دالر ساین تمام شود.
RegEx Example: ant$
merchant => pass
antonym => not pass
samanta => not pass
۳- استریسک یا ستاره – *
کاراکتر ستاره نشان میدهد که کاراکتر قبل از آن میتواند صفر بار یا بیشتر از آن تکرار شود. یعنی کاراکتر قبل از آن میتواند نباشد یا به تعداد نامحدود تکرار شود.
RegEx Example: go*gle
ggle => pass
google => pass
gooooogle => pass
۴- پلاس ساین یا بهعلاوه – +
کاراکتر بهعلاوه نشان میدهد که کاراکتر قبل از آن میتواند یک بار یا بیشتر تکرار شود. یعنی عبارت قبل از آن میتواند یک بار استفاده شود یا به تعداد نامحدود تکرار شود. همانطور که مشاهده میکنید، کاراکترهای بهعلاوه و ستاره خیلی شبیه به هم هستند؛ با این تفاوت که در صورت استفاده از بهعلاوه، کاراکتر قبلی حتما باید استفاده شود و در هنگام استفاده از ستاره، چنین محدودیتی وجود ندارد.
RegEx Example: go+gle
ggle => not pass
google => pass
gooooogle => pass
۵- کوئسچن مارک یا علامت سوال – ?
علامت سوال کاری میکند تا بود و نبود کاراکتر قبل از آن یکی باشد. معروف است که میگویند علامت سوال در رجکس، کاراکتر قبلی را آپشنال میکند. به مثال دقت کنید:
RegEx Example: ^google?com$
googlcom => pass
google.com => not pass
googlecom => pass
۶- دات یا نقطه – .
نقطه یکی از اپراتورهای خاص و وحشی رجکس است. نقطه در رجکس میتواند با هر چیزی به غیر از لاین بریک (Line Break) جایگزین شود. منظور از لاین بریک همان اینتر زدن است و چنین کاراکتری نمیتواند به جای نقطه در رجکس بنشیند. اما خود نقطه را میتوانید به جای نقطه رجکس بنشانید و حتی میتوانید از فاصله (Space) به جای آن استفاده کنید.
RegEx Example: a.c
abc => pass
a c => pass
ac => not pass
۷- پایپ یا خط عمودی – |
پایپ به شما قدرت تصمیمگیری میدهد و میگذارد بین چند گزینه مردد بمانید! با استفاده از پایپ میتوانید عملیات OR منطقی را پیاده کنید. خوب است بدانید که میتوانید به تعداد دلخواهتان پایپ اضافه کنید و به همان تعداد، انتخابهایتان را زیاد کنید. مثالها را ببینید:
RegEx Example: cat|dog|pet
cat => pass
dog => pass
catdog => pass
ca => not pass
pet =>pass
۸- براکت یا کروشه – [ ]
اجازه میدهد تا یکی از کاراکترهای داخلاش و نه همهی آنها انتخاب شوند. براکت به تنهایی کاربرد محدودی دارد و معمولا با دش ترکیب میشود. فعلا مثال مربوط به براکت را ببینید:
RegEx Example: cam[aro]$
cama => pass
camr => pass
camo => pass
camaro => not pass
۹- دش یا خط تیره – –
دش یا خط تیره به شما اجازه میدهد تا یک محدوده انتخاب داشته باشید. دش به تنهایی استفاده نمیشود و معمولا در ترکیب با اپراتورهای دیگر رجکس از آن استفاده میکنند. رایجترین کاربرد دش این است که با براکت ترکیب شود و [ – ] را بسازد.
نکته: رجکس به حروف بزرگ و کوچک (Uppercase / Lowercase) حساس است.
RegEx Example: Item[0-4]
Item3 => pass
item3 => not pass
Item2 => pass
Item 2 => not pass
Item6 => not pass
۹- پرانتز یا همان پرانتز – ()
پرانتز در رجکس همانطوری کار میکند که در ریاضی به کار میرود. هر زمانی که نیاز داریم یکی از اپراتورهای رجکس را روی گروهی از کارکترها پیاده کنیم و میخواهیم اولویت اجرای اپراتورها را مشخص کنیم، باید از پرانتز کمک بگیریم.
RegEx Example: Amir(Ali|Hossein|Mohammad)
AmirAli => pass
AmirHossein => pass
Amir Mohammad => not pass
AliMohammad => not pass
۱۰- کرلی بریسز یا آکلاد – {}
استفاده از کرلی بریسز باعث میشود تا بتوان کاراکتر قبل از آن یک تعدادی که درون بریسز مشخص میشود، تکرار کرد.
RegEx Example: Go{2}gle
Google => pass
Gogle => not pass
Google.com => pass
Ggle => not pass
یک حالت دیگر هم برای استفاده از کرلی بریسز وجود دارد. در این حالت میتوانیم مشخص کنیم که حداقل و حداکثر دفعات استفاده از کاراکتر قبل از این اپراتور چقدر باشد.
RegEx Example: Go{1,3}gle
Google => pass
Gogle => pass
Gooooogle => not pass
۱۱- بک اسلش یا اسکیپ – \
بک اسلش کاری میکند تا از شر اپراتورهای شناختهشدهی رجکس در عبارتتان خلاص شوید. گاهی اوقات نیاز دارید که از حالت عادی این کاراکترها استفاده کنید و کارکرد آنها در حالت رجکسیشان کارتان را خراب میکند. در چنین مواقعی میتوانید با استفاده از اسکیپ، کاراکترها را به حالت عادیشان برگردانید.
RegEx Example: google\.com
google.com => pass
googleecom => not pass
توجه داشته باشید که در این مثال اگر بک اسلش وجود نمیداشت، میتوانستیم به جای دات از حرف e استفاده کنیم و pass بگیریم. ولی وقتی بکاسلش پشت دات میآید، مشخص میکند که این دات دیگر دات رجکسی نیست و باید مثل کاراکترهای عادی با آن رفتار کرد.
ترکیب اپراتورها با یکدیگر
اپراتورهای رجکس به تنهایی قدرتمند هستند. اما زمانی که در کنار یکدیگر قرار بگیرند، قدرت واقعیشان را نمایش میدهند. ترکیب این اپراتورها از بایدهای رجکس است و نمیتوانیم تصمیم بگیریم که آنها را ندیده بگیریم. با وجود اینکه بینهایت ترکیب رجکسی وجود دارد، چند مورد از آنها را با هم مرور میکنیم.
۱- دات استار یا نقطه ستاره – *.
دات استار یکی از قدرتمندترین ترکیبهای رجکسی است و کاری میکند تا بتوانید همهچیز را هدف قرار دهید. دات استار حتی میتواند خودش را هم حذف کند و کاری کند که خودش هم نادیده گرفته شود. به مثالها دقت کنید:
RegEx Example: ^power.*com$
power.com => pass
powercom => pass
powerplay.com => pass
power company => not pass
۲- دات کوئسچن مارک یا نقطه علامت سوال – ?.
از آن ترکیبهای غریب و خاص رجکس است. اما استفاده از آن ضرری ندارد و میتوانید آن را به کار بگیرید. با این کار، نقطه را آپشنال میکنید و میتوانید آن را نادیده بگیرید. مثال را ببینید:
RegEx Example: google.?com
googlecom => pass
google.com => pass
googlercom => pass
googl.com => not pass
اپراتورهایی که تا اینجا دربارهشان صحبت کردیم، تنها اپراتورهای پرکاربرد رجکس را شامل میشدند. تعداد اپراتورهای رجکس خیلی بیشتر از این است. لیست کامل اپراتورهای رجکس را به راحتی میتوانید در دنیای اینترنت پیدا کنید.
چطور از درست بودن عبارت رجکس مطمئن شویم؟
بخش زیادی از این موضوع را باید به صورت تجربی یاد بگیرید. هر چقدر بیشتر تمرین کنید، بیشتر بر عبارتهای رجکسی تسلط پیدا میکنید. با تمرین زیاد حتی میتوانید به نقطهای برسید که با یک نگاه ساده هم از منطق عبارت رجکس مطلع شوید. اما یک راه ساده برای اطمینان از صحت عبارتهای رجکس وجود دارد. خود من از یک سرویس آنلاین با نام رجکسر (Regexr) استفاده میکنم. این ابزار در قسمت تست به شما اجازه میهد عبارت باقاعدهتان را وارد کنید و با استفاده از مثالهای متعدد بتوانید صحت عبارت رجکس را تشخیص دهید. من هر وقت به منطق عبارت رجکس شک میکنم، سریع یک تب رجکسر باز میکنم و عبارت را تست میکنم. اینطوری از کار کردن درست آن عبارت خاطرجمع میشوم.
چند نمونه از کاربردهای رجکس
۱- فیلد وارد کردن کد ملی، کد پستی و مواردی که باید تعداد کاراکتر مشخصی از اعداد داشته باشند.
^[۰-۹]{۱۰}$
اگر بخواهیم از همین منطق برای فیلد شماره موبایل تغییر دهیم، نیاز است تا به جای عدد ۱۰ داخل کرلی بریسز ۱۱ بگذاریم.
۲- فیلد وارد کردن ترکیبی از عدد و حروف که برای اسم و فامیل و مواردی از این دست کاربرد دارد.
[a-zA-Z0-9]
۳- فیلد وارد کردن رمز عبور که شامل عدد و حروف و دش و آندرلاین است و بین ۸ تا ۲۰ کاراکتر دارد.
^[a-z0-9_-]{8,20}$
۴- فیلد وارد کردن شماره موبایل ایرانی که باید ۰۹ شروع میشود و ۱۱ عددی است.
^۰۹[۰-۹]{۹}$
در سایت Digital Fortress میتوانید مثالهای پیچیدهتری از کاربردهای رجکس را در دنیای واقعی ببینید.
منابع لازم برای یادگیری بیشتر دربارهی رجکس
میتوانم بگویم اگر از دیجیتال مارکترهای باسواد دربارهی منبع یادگیری رجکس سوال کنید، به احتمال قوی ایبوک کوتاه و مختصر لونامتریکس (Lunametrics) را به شما معرفی خواهند کرد. البته لونامتریکس حالا دیگر تغییر نام داده است و با نام باونتیس (Bounteus) شناخته میشود. اما ایبوک رجکس لونامتریکس هنوز با همان نام قبلی در دسترس است.
منبع دیگری که خودم پیدا کردهام، یک کتابچهی آموزشی است که توسط وبسایت مژرمنت مارکتینگ (Measurementmarketing) تولید شده است. این وبسایت متعلق به کریس مرسر (Chris Mercer) است و میتوانید با خیال راحت به اطلاعات این کتابچه هم اعتماد کنید. برای دانلود کتابچه میتوانید از این لینک استفاده کنید.
منبع عکس کاور این پست، سایت Freepik است.
خیلی عالی بود…از توضیحات که نگم…روان و قابل فهم…من از چند جا دیگه خونده بودم اما نتونستم به خوبی خوندن این مقاله درک کنم…خیلی خیلی ممنون 🙂
قربون شما