regular expression

regex چیست؟ تمرینات، ابزارها و قوانین آن که باید بدانید

اساطیر زبان

regex مخفف regular expression به معنای عبارت منظم است که به آن عبارت باقاعده نیز گفته می شود. عبارت باقاعده مجموعه ای از کاراکترهای تشکیل دهنده یک الگو است که می توان آن را در یک رشته جستجو کرد. از Regex می توان برای اعتبارسنجی ها مانند اعتبارسنجی شماره کارت عابر بانک، برای جستجو مانند مطابقت متن پیچیده و یا برای جایگزینی متن تطبیق یافته با یک رشته دیگر استفاده کرد. عبارت های با قاعده چند پشتیبان زبان فوق العاده دارد، بنابراین با یادگیری آن می توانید در بسیاری از زبان های برنامه نویسی از آن استفاده کنید.

افراد بسیاری وجود دارند که regex را کاملاً نادیده می گیرند. آنها را سرزنش نمی کنیم زیرا ساختار گرامری regex پیچیده است و درست مانند زبان های خط فرمان می توانند آزاردهنده باشند. ممکنه هر چیز جدیدی ترسناک باشد و در ابتدا یادگیری آن غیرممکن به نظر برسد اما شروع کنید، جسور باشید و سعی کنید.

 


برنامه نویسی شبکه معماری کامپیوتر هوش مصنوعی و تجاری

توی این پک فوق العاده، صفرتاصد مبانی برنامه نویسی رو جوری یاد میگیری که تو هیچ کلاس آموزشی یا پک دیگه ای نه دیدی نه شنیدی! بدون هیچ کلاسی، با صفرتاصد مبانی برنامه نویسی اپلیکیشن بزن، پروژه محور یاد بگیر و حسابی پول در بیار! 


 

Regex

regex ریشه در علوم عصب شناسی و ریاضیات دارد. ریشه آن در برنامه نویسی به سال 1968 برمی گردد که کن تامپسون (Ken Thompson) آن را در ویرایشگر متنی QED برای جستجوی متن پیاده سازی کرد. امروزه بخشی از بسیاری از زبان های برنامه نویسی مانند پرل، جاوا، پایتون، روبی و جاوا اسکریپت است.

بیایید چند مثال در مورد نحوه عملکرد regex را بررسی کنیم.

در مثال های اینجا از جاوا اسکریپت استفاده می کنیم. با توضیح یک مثال ساده شروع می کنیم، regex زیر را نگاه کنید:

word image 13

regex بالا یک رشته جستجو می کند که با کاراکتر “B” شروع شود و نماد + بعد از براکت می گوید که حداقل یکی از کاراکترها داخل براکت “a” تا “z”، “A” تا “Z” و اعداد 0 تا 9 را باید شامل شود.

نماد + یک quantifier (شمارنده یا کمیت سنج) است. یک quantifier تعداد تکرار و موقعیت کاراکترهای داخل براکت را مشخص می کند.

نمونه زیر را برای پیدا کردن موارد تطبیقی در نظر بگیرید:

Basket , bulb, B12 vitamin, BaSO4 , N BC company

عبارت باقاعده بالا جستجو را در Basket متوقف می کند و پاسخ مثبت برمی گرداند. دلیلش این است که اگر می خواهید regex تمام موارد احتمالی را بررسی کند باید اصلاح کننده (modifier) سراسری “g” را با آن اضافه کنید تا جستجو ادامه پیدا کند.

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

var input = “your test string”, regex = /B[a-zA-Z\d]+/;

if(!regex.test(input))

alert(‘No match is found’);

else

alert(‘A match is found’);

یک متد دیگر را امتحان کنیم: با اضافه کردن اصلاح کننده g به عبارت و با استفاده از متد match همه موارد تطبیقی موجود را در یک آرایه را برمی گرداند.

var input = “your test string”,

regex = /B[a-zA-Z\d]+/g,

/*برای پیدا کردن همه موارد تطبیقی به عیارت اضافه شده است gاصلاح کننده */

ary = input.match(regex);

if(ary===null)

alert(‘No match is found’);

else

alert(‘matches are: ‘ + ary.toString());

متد replace چگونه است؟ این متد را با regex امتحان می کنیم.

var input = “your test string”,

regex = /B[a-zA-Z\d]+/g;

alert(input.replace(regex, “#”));

تمرین Regex

برای یادگیری بهتر می توانید “تمرینات regex” را در گوگل جستجو کرده و آنها را حل کنید. در اینجا تمرینات مورد انتظار با توجه به سطح دشواری آنها آورده شده است.

تمرینات پایه

برای مبتدیان اعتبارسنجی رمز عبور کافی است. به عنوان مثال برای یک رمز عبور با طول 8 تا 16 کاراکتر شامل حروف الفبا همراه با کاراکترهای خاص مجاز (به دلخواه) یک regex بنویسید.

تمرینات وسط

در این نوع تمرینات باید با داده های بیشتری در دنیای واقعی تمرین کنید و نکات بیشتری درباره regex مانند گزاره های (شرطی) قبل و بعد از عبارت و گروه های منطبق سازگار را یاد بگیرید.

    • اعتبارسنجی کدهای PIN، هگزا دسیمال ها، تاریخ ها، شناسه ایمیل ها.
    • جایگزینی صفر های قبل از عدد، فاصله ها، مجموعه کلمات تطبیق یافته.
    • بیرون کشیدن قسمت های مختلف از یک URL.

تمرینات پیشرفته

می توانید راه حل تمرینات بالا را بهینه سازی کنید، به عنوان مثال بهینه ترین regex برای ایمیل کاراکترهای زیادی دارد. بنابراین ادامه دهید تا جایی که احساس رضایت داشته باشید و این کافی است. می توانید موارد زیر را نیز امتحان کنید:

  • تجزیه HTML یا XML (گرچه در دنیای واقعی از انجام این کار ناامید می شوید زیرا استفاده از عبارت های با قاعده برای تجزیه یک زبان نامنظم مثل HTML هرگز آن را بی خطا نمی کند. علاوه بر این تجزیه XML یک کار دشوار است و بیشتر برای کاربران سطح خیلی پیشرفته مناسب است)
  • جایگزینی تگ ها
  • حذف کامنت ها (به جز کامنت های شرطی IE)

حتما در کنار این مطلب دانلود کنید: آموزش صفر تا صد برنامه نویسی (رایگان)

ابزارهای Regex

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

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

  • Debuggex: این ابزار یک نمودار regex را مطابق ورودی ترسیم می کند و می توانید از آنجا به سرعت در StackOverflow به اشتراک بگذارید.
  • RegExr: از ابزار RegExr می توانید برای تست regex خود استفاده کنید. همچنین نمونه هایی برای کمک و تمرین بیشتر به شما ارائه می دهد.

کاراکترها و قوانین Regex

تعریف

توکن

حداقل یکی از کاراکترهای a، b یا c

[abc]

هر کاراکتری غیر از a، b یا c

[^abc]

کاراکترهای بین a تا z

[a-z]

هر کاراکتری به غیر از کاراکترهای بین a تا z

[^a-z]

کاراکترهای بین A تا Z

[A-Z]

هر کاراکتری

.

کاراکتر فضای خالی یا فاصله

\s

هر کاراکتری غیر از فضای خالی یا فاصله

\S

اعداد بین 0 تا 9

\d

هر کاراکتر غیر عددی

\D

کاراکتر کلمه ای. کاراکتر از نوع عددی، حروف الفبا یا آندرلاین (_)

\w

کاراکتر غیر کلمه ای. هر کاراکتری غیر از نوع عددی، حروف الفبا یا آندرلاین (_)

\W

مجموعه و گروه بندی الگوها

(…)

تطبیق با a یا b

(a|b)

کاراکتر a یا نباشد یا یکبار باشد.

a?

کاراکتر a یا نباشد یا چند بار تکرار شده باشد.

a*

کاراکتر a حداقل یک بار تکرار شده باشد.

a+

کاراکتر a سه بار پشت سر هم تکرار شده باشد.

a{3}

کاراکتر a سه بار یا بیشتر پشت سر هم تکرار شده باشد.

a{3,}

کاراکتر a حداقل سه بار و حداکثر شش بار پشت سر هم تکرار شده باشد.

a{3,6}

نقطه شروع (با عبارت بعد از ^ شروع شود)

^

نقطه پایان رشته

$

مرز کلمه. کاراکتر آخر کلمه یا ابتدای کلمه باشد یا کاراکتر بین کاراکتر کلمه ای و غیر کلمه ای باشد.

\b

در مرز کلمه نباشد.

\B

حتما دانلود کنید: آموزش صفر تا صد Regex (رایگان)

تفاوت پک های حرفه ای ما با آموزشهای رایگان: بطور خلاصه از زمین تا آسمان! 1-پکها، جدیدترین نسخه نرم افزارها را آموزش می دهند با قابلیت های بسیار بیشتر. 2-پکها توسط متخصص آن نرم افزار، به صورت کاملا پروژه محور و با حل چالش هایی که در مسیر کار عملی و حرفه ای با آن روبرو می شوید تهیه شده اند و بعد از استفاده، کاملا برای بازار کار آماده اید! 3- متد این پکها کاملا کار شده و تا ماهها، در ذهن تان ماندگارند و یادگیری بسیار سریعتر و کاملتری خواهید داشت. آموزشهای رایگان فقط دستورات نرم افزارها را (آنهم ناقص) بیان می کنند و تازه برای ورود به بازار باید ماهها تجربه عملی هم کسب کنید !!

turned_in,

چرب زبان

با این اپلیکیشن ساده، هر زبانی رو فقط با 5 دقیقه در روز، توی 80 روز مثل بلبل حرف بزن! بهترین متد روز، تقویت حافظه، آموزش تصویری. یادگیری زبان کلید یادگیری هر مهارتی در قرن 21 !


حتما بخوانید!

دیدگاهتان را بنویسید

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

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.

فهرست